如何在 CodeIgniter 4 中使用子目录控制器?
How to work with subdirectory controllers in CodeIgniter 4?
我需要有关在 CodeIgniter 4 中使用子目录控制器的帮助。
我只是出于某种原因无法让它工作。
这是 URL 例如:www.example.com/admin/dashboard
在控制器文件夹中,我创建了一个名为 Admin
的文件夹和一个名为 Dashboard.php
.
的文件
我在Dashboard.php
中使用了这段代码:
namespace App\Controllers;
class Dashboard extends BaseController
{
public function index()
{
}
}
我尝试将 class 名称更改为 AdminDashboard
、Admin_Dashboard
,几乎每个逻辑名称,但每次我都收到 404 错误,说:
Controller or its method is not found:
App\Controllers\Admin\Dashboard::index
我知道文件本身已成功加载,但我想我没有正确声明 class 名称,它一直向我抛出那些 404 错误。
不幸的是,CI4 的文档没有提供任何关于 classname 应该叫什么的信息...
更新 #1
我设法通过改变一些东西让它工作:
namespace App\Controllers\Admin;
use CodeIgniter\Controller;
class Dashboard extends Controller
{
public function index()
{
}
}
但现在它不会扩展 BaseController
,它具有我为我的应用程序构建的一些核心功能。
关于如何扩展它的任何想法 BaseController
?
我必须承认我对命名空间的了解还不多,所以这可能是我犯错误的原因。
和我想象的一样,问题是我没有学习命名空间。
我需要将 use
行指向 BaseController 位置。
namespace App\Controllers\Admin;
use App\Controllers\BaseController;
class Dashboard extends BaseController
{
public function index()
{
}
}
现在 www.example.com/admin/dashboard/
直接进入该索引函数,如预期的那样。
php spark make:controller /Subfolder/ControllerName
$routes->add('/(.+?)_(.+?)/(.+?)$', 'subdir\\_::');
$routes->add('/(.+?)_(.+?)$', 'subdir\\_::index');
我能够使用此设置进行映射。
我需要有关在 CodeIgniter 4 中使用子目录控制器的帮助。
我只是出于某种原因无法让它工作。
这是 URL 例如:www.example.com/admin/dashboard
在控制器文件夹中,我创建了一个名为 Admin
的文件夹和一个名为 Dashboard.php
.
我在Dashboard.php
中使用了这段代码:
namespace App\Controllers;
class Dashboard extends BaseController
{
public function index()
{
}
}
我尝试将 class 名称更改为 AdminDashboard
、Admin_Dashboard
,几乎每个逻辑名称,但每次我都收到 404 错误,说:
Controller or its method is not found: App\Controllers\Admin\Dashboard::index
我知道文件本身已成功加载,但我想我没有正确声明 class 名称,它一直向我抛出那些 404 错误。
不幸的是,CI4 的文档没有提供任何关于 classname 应该叫什么的信息...
更新 #1
我设法通过改变一些东西让它工作:
namespace App\Controllers\Admin;
use CodeIgniter\Controller;
class Dashboard extends Controller
{
public function index()
{
}
}
但现在它不会扩展 BaseController
,它具有我为我的应用程序构建的一些核心功能。
关于如何扩展它的任何想法 BaseController
?
我必须承认我对命名空间的了解还不多,所以这可能是我犯错误的原因。
和我想象的一样,问题是我没有学习命名空间。
我需要将 use
行指向 BaseController 位置。
namespace App\Controllers\Admin;
use App\Controllers\BaseController;
class Dashboard extends BaseController
{
public function index()
{
}
}
现在 www.example.com/admin/dashboard/
直接进入该索引函数,如预期的那样。
php spark make:controller /Subfolder/ControllerName
$routes->add('/(.+?)_(.+?)/(.+?)$', 'subdir\\_::');
$routes->add('/(.+?)_(.+?)$', 'subdir\\_::index');
我能够使用此设置进行映射。