如何在 CodeIgniter 4 中使用子目录控制器?
Posted
技术标签:
【中文标题】如何在 CodeIgniter 4 中使用子目录控制器?【英文标题】:How to work with subdirectory controllers in CodeIgniter 4? 【发布时间】:2020-07-22 18:53:03 【问题描述】:我需要在 CodeIgniter 4 中使用子目录控制器的帮助。
由于某种原因,我无法让它工作。
这是网址,例如:www.example.com/admin/dashboard
在控制器文件夹中,我创建了一个名为Admin
的文件夹和一个名为Dashboard.php
的文件。
我在Dashboard.php
中使用了这段代码:
namespace App\Controllers;
class Dashboard extends BaseController
public function index()
我尝试将类名更改为AdminDashboard
、Admin_Dashboard
,几乎每个逻辑名称,但每次我收到 404 错误时,都会说:
找不到控制器或其方法: App\Controllers\Admin\Dashboard::index
我知道文件本身已成功加载,但我认为我没有正确声明类名并且它不断向我抛出那些 404 错误。
不幸的是,CI4 的文档没有提供任何关于类名应该叫什么的信息......
更新 #1
我设法通过改变一些事情使它工作:
namespace App\Controllers\Admin;
use CodeIgniter\Controller;
class Dashboard extends Controller
public function index()
但现在它不会扩展 BaseController
,它有一些我为我的应用程序构建的核心功能。
关于如何使其扩展 BaseController
的任何想法?
我必须承认我对命名空间的了解还不是很多,所以这可能是我犯错误的原因。
【问题讨论】:
【参考方案1】:正如我想象的那样,问题在于我没有学习命名空间。
我需要将use
线指向 BaseController 位置。
namespace App\Controllers\Admin;
use App\Controllers\BaseController;
class Dashboard extends BaseController
public function index()
现在www.example.com/admin/dashboard/
按预期直接进入该索引函数。
【讨论】:
有了这些知识,您就可以实现类似 HMVC 的结构和任何您喜欢的东西。 你是如何绘制路线图的? 还有一件事是你不应该在控制器文件夹中有一个名为 Admin 的控制器,否则它不会工作,或者你可以使用路由来解决这个问题【参考方案2】:php spark make:controller /Subfolder/ControllerName
【讨论】:
欢迎来到 Stack Overflow!欢迎来到 ***。虽然此代码可能会回答问题,但提供有关 如何 和/或 为什么 解决问题的附加上下文将提高答案的长期价值。【参考方案3】:$routes->add('/(.+?)_(.+?)/(.+?)$', 'subdir\\\\$1_$2::$3');
$routes->add('/(.+?)_(.+?)$', 'subdir\\\\$1_$2::index');
我能够使用此设置进行映射。
【讨论】:
以上是关于如何在 CodeIgniter 4 中使用子目录控制器?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 ajax (codeigniter) 在我的编辑表单中获取和显示选定值到 <select2> 标记中
如何使用codeigniter 4框架在mysql数据库中插入多行?