有人能告诉我吗我必须在Codeigniter 4中的Routes.php中声明我的所有控制器吗?
我似乎无法让控制器工作,除非我将其直接添加到";Routes.php";
我已经正确创建了我的控制器,家庭控制器在安装和设置后可以工作。
如果我添加控制器My_page.php:
<?php
namespace AppControllers;
class My_page extends BaseController{
public function index(){
echo "Controller 'My_page' -> function index() ";
}
}
?>
我得到一个:";404-找不到文件很抱歉似乎找不到您要查找的页面">
如果我现在将控制器添加到路线中,即:
$routes->post('my_page', 'My_page::index');
然后我的控制器正常工作;控制器"My_page"->函数index(("当我访问www.mydomain.com/my_page 时
我还测试了:www.mydomain.com/index.php/my_page
,这没有什么区别。
我正在使用下载时附带的.htaccess。我已将基本URL更新为www.mydomain.com/
文件让我感到困惑——https://www.codeigniter.com/user_guide/incoming/routing.html#setting-路由规则;
听起来好像他们在说必须声明所有带有路由的类?
为什么我的控制器没有在Routes.php中明确声明就不能工作
我是不是误解了"setAutoRoute(true)
"——它似乎也不起作用——我希望我能像在CI3中一样打开它,简单地创建我的控制器?
如果您不启用自动路由,那么您肯定需要添加所有允许的路由,否则任何操作都将失败,并返回错误404。正如@parttimeturtle提到的-autoroute,它从4.2开始默认禁用。
简而言之,是的,您需要添加所有控制器、它们的函数和适当的http方法。(这也包括CLI路由(
您可以使用$route->add((,它将允许所有http方法,但是用它们的方法显式设置它们更安全。