如何在CodeIgniter 4中使用子目录控制器?

mrwjdhj3  于 2022-12-28  发布在  其他
关注(0)|答案(4)|浏览(184)

我需要在CodeIgniter 4中使用子目录控制器的帮助。
我只是因为某些原因不能让它工作。
这是以下示例的URL:第一个月
在controllers文件夹中,我创建了一个名为Admin的文件夹和一个名为Dashboard.php的文件。
我在Dashboard.php中使用了以下代码:

namespace App\Controllers;

class Dashboard extends BaseController
{
    public function index()
    {

    }
}

我尝试将类名更改为AdminDashboardAdmin_Dashboard,几乎所有逻辑名称,但每次我都得到一个404错误,说:
找不到控制器或其方法:应用程序\控制器\管理员\ Jmeter 板::索引
我知道文件本身会成功加载,但我认为我没有正确声明类名,它一直向我抛出那些404错误。
不幸的是,CI4的文档没有提供任何关于类名应该被称为什么的信息...

更新#1

我通过改变几件事成功地让它运转起来:

namespace App\Controllers\Admin;
use CodeIgniter\Controller;

class Dashboard extends Controller
{
    public function index()
    {

    }
}

但现在它不会扩展BaseController,它有一些核心功能,我为我的应用程序。
关于如何扩展BaseController有什么想法吗?
我必须承认,我对命名空间还没有太多的了解,所以这可能是我犯错误的原因。

yk9xbfzb

yk9xbfzb1#

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

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

class Dashboard extends BaseController
{
    public function index()
    {

    }
}

现在,www.example.com/admin/dashboard/直接进入该索引函数,正如预期的那样。

e5nszbig

e5nszbig2#

php spark make:controller /Subfolder/ControllerName
svujldwt

svujldwt3#

$routes->add('/(.+?)_(.+?)/(.+?)$', 'subdir\\\\$1_$2::$3');
$routes->add('/(.+?)_(.+?)$', 'subdir\\\\$1_$2::index');

我可以用这个设置绘制Map。

dgtucam1

dgtucam14#

路由Map可以简单到:

$routes->group('admin', static function ($routes) {
    $routes->get('dashboard', 'Admin\Dashboard::index');
});

相关问题