6

我需要在 CodeIgniter 4 中使用子目录控制器的帮助。

由于某种原因,我无法让它工作。

这是例如 URL: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

我必须承认我对命名空间的了解不多,所以这可能是我犯错误的原因。

4

3 回答 3

11

正如我想象的那样,问题在于我没有学习命名空间。我需要将use线指向 BaseController 位置。

namespace App\Controllers\Admin;
use App\Controllers\BaseController;

class Dashboard extends BaseController
{
    public function index()
    {

    }
}

现在www.example.com/admin/dashboard/按预期直接进入该索引函数。

于 2020-04-10T03:48:20.557 回答
0
php spark make:controller /Subfolder/ControllerName
于 2021-09-03T11:43:07.793 回答
0
$routes->add('/(.+?)_(.+?)/(.+?)$', 'subdir\\\\$1_$2::$3');
$routes->add('/(.+?)_(.+?)$', 'subdir\\\\$1_$2::index');

我能够使用此设置进行映射。

于 2021-12-09T09:37:42.197 回答