我已经完成了管理控制器并将其放在名为“Admin”的子文件夹中
Controller
Admin
-login.php
现在我想通过我写这个的路由器文件来获取它
$routes->get('admin', 'Admin/Login::index');
但它向我显示“未找到”错误并重定向到"http://localhost/admin"
.
会不会有一些 .htaccess 问题?
我已经完成了管理控制器并将其放在名为“Admin”的子文件夹中
Controller
Admin
-login.php
现在我想通过我写这个的路由器文件来获取它
$routes->get('admin', 'Admin/Login::index');
但它向我显示“未找到”错误并重定向到"http://localhost/admin"
.
会不会有一些 .htaccess 问题?
替换这个
$routes->get('admin', 'Admin/Login::index');
和
$routes->get('admin', 'Admin\Login::index');
还要确保在 login.php 中添加命名空间
namespace App\Controllers\Admin;
如果你保持 CI4 的目录结构完整,你实际上可以为控制器、模型、视图等使用子文件夹。
例如 app/Controllers/Admin/Login.php 是放置 Controller 类的有效位置。确保在 Login.php 中添加适当的命名空间 - 命名空间 App\Controllers\Admin;同样在路由中 - $routes->get('admin', 'App\Controllers\Admin\Login::index'); 没有 App\Controllers 前缀也可以正常工作,但我从未对它进行过广泛的测试,而且我认为之前的某些 CI4 版本存在问题。
另一个问题可能是您的 app/Config/App.php 类。如果您没有更改 .htaccess 文件中的任何内容(公共目录中的那个!),则应将 $baseURL 设置为您的公共目录地址 - http://localhost/myproject/public/。或者,如果您想让它更容易 - 设置虚拟主机。
只是要添加的一件事 - $routes 中的 get() 方法仅允许 GET 请求,这意味着如果您尝试发布某些内容(或使用任何其他 HTTP 请求方法),它将失败并重定向。