首页 > php框架 > ThinkPHP > 正文

解决ThinkPHP6提示控制器不存在问题

藏色散人
发布: 2021-01-06 16:21:32
转载
10620人浏览过

下面由thinkphp教程栏目给大家介绍thinkphp6提示控制器不存在的解决方法,希望对需要的朋友有所帮助!

解决ThinkPHP6提示控制器不存在问题

ThinkPHP 6 提示控制控制器不存在


 thinkphp 6 默认是单应用模式,需要多应用时,就要安装多应用模式扩展think-multi-app。

composer require topthink/think-multi-app
登录后复制

然后删除框架自带的app\controller目录,创建自己需要的应用目录.

立即学习PHP免费学习笔记(深入)”;

例如:\app\index\controller\Index.php

<?php
namespace app\index\controller;use app\BaseController;class Index extends BaseController
{    public function index()
    {        return 'hello index';
    }
}
登录后复制

访问这个方法:http://www.study_tp6.com/public/index.php/index/index/index

结果提示:控制器不存在 app\controller\index


查找原因:

1、按照官方文档安装了think-multi-app扩展,提示安装成功。

2、控制器的命名空间也没写错。

3、访问路径与目录名、控制器、方法名一样,访问地址是没错的。

4、网上有说,在配置文件config/app.php中,将 'auto_multi_app' => flase, 改为true,

  但我使用的版本是ThinkPHP 6.0.4,配置文件中并没有这个参数,试了试,加上也没用。

5、难道下载的框架有问题?重新下载框架,重新安装多应用扩展,结果还是不行。


解决办法:

感谢 【ikgade】在官方的评论分享,试了试,解决了这个坑。

这是作者的思路和方案:

为什么提示 “控制器不存在: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
登录后复制

复制vendor/composer/installed.json中的services值到vender/services的数组中。

以上就是解决ThinkPHP6提示控制器不存在问题的详细内容,更多请关注php中文网其它相关文章!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:cnblogs网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号