我已经完成了管理控制器,并将其放在名为“ Admin”的子文件夹中
Controller
Admin
-login.php
现在,我想通过写此文件的路由器文件来获取
$routes->get('admin', 'Admin/Login::index');
但是它向我显示“未找到”错误,并重定向到"http://localhost/admin"
。
是否可能存在某些.htaccess问题?
答案 0 :(得分:1)
替换此
$routes->get('admin', 'Admin/Login::index');
使用
$routes->get('admin', 'Admin\Login::index');
还要确保在您的login.php中添加名称空间
namespace App\Controllers\Admin;
答案 1 :(得分:0)
如果您保持CI4的目录结构完整,那么实际上您可以对Controllers,Models,Views等使用子文件夹。
例如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请求方法),它将失败并重定向。