Maison > cadre php > PensezPHP > le corps du texte

Résolvez le problème selon lequel ThinkPHP6 indique que le contrôleur n'existe pas

藏色散人
Libérer: 2021-01-07 09:10:45
avant
10042 Les gens l'ont consulté

La colonne tutorielle suivante de thinkphp vous présentera la solution au problème que ThinkPHP6 indique que le contrôleur n'existe pas. J'espère que cela sera utile aux amis dans le besoin. !

Résolvez le problème selon lequel ThinkPHP6 indique que le contrôleur n'existe pas

ThinkPHP 6 indique que le contrôleur de contrôle n'existe pas


thinkphp 6 passe par défaut en mode application unique, lorsque plusieurs des applications sont nécessaires, vous devez installer l'extension du mode multi-applications think-multi-app.

composer require topthink/think-multi-app
Copier après la connexion

Supprimez ensuite le répertoire appcontroller fourni avec le framework et créez le répertoire d'application dont vous avez besoin

Par exemple : appindexcontrollerIndex.php

<?php
namespace app\index\controller;use app\BaseController;class Index extends BaseController
{    public function index()
    {        return 'hello index';
    }
}
Copier après la connexion

Accédez à cette méthode. : http: //www.study_tp6.com/public/index.php/index/index/index

Invite de résultat : Le contrôleur n'existe pas appcontrollerindex


Trouvez la raison :

1. L'extension think-multi-app a été installée conformément à la documentation officielle et il a été indiqué que l'installation avait réussi.

2. L'espace de noms du contrôleur est également écrit correctement.

3. Le chemin d'accès est le même que le nom du répertoire, le contrôleur et le nom de la méthode, et l'adresse d'accès est correcte.

4. On dit sur Internet que dans le fichier de configuration config/app.php, changez 'auto_multi_app' => flase, en true,

Mais la version que j'utilise est ThinkPHP 6.0.4. Il n’existe aucun paramètre de ce type dans le fichier de configuration. J’ai essayé de l’ajouter mais cela n’a pas fonctionné.

5. Y a-t-il un problème avec le framework téléchargé ? J'ai retéléchargé le framework et réinstallé l'extension multi-application, mais cela ne fonctionnait toujours pas.


Solution :

Merci [ikgade] de l'avoir partagé dans les commentaires officiels. Je l'ai essayé et j'ai résolu ce piège.

Voici l'idée et le plan de l'auteur :

为什么提示 “控制器不存在:app\controller\Admin”?
因为安装多应用模式扩展执行的指令没有生效 php think service:discover 自动注册扩展包的系统服务。
为什么自动注册拓展包服务失败,详见代码:
vendor/topthink/framework/src/think/console/command/ServiceDiscover.php
第34行代码$package['extra']['think']['services']为空,导致生成自动注册服务文件
services.php 中没有注册的代码。
天坑!
怎么解决呢?
首先找到你加入的拓展,在这里:
vendor/composer/installed.json
然后把所有的$package['extra']['think']['services']复制粘贴到services中,或者修改以下文件的代码:
vendor/topthink/framework/src/think/console/command/ServiceDiscover.php
Copier après la connexion

Copiez la valeur des services dans supplier/composer/installed.json dans le tableau des fournisseurs/services.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:cnblogs.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal