Codeigniter 4 - 除非我直接将它们添加到路由中,否则控制器将无法工作.php



有人能告诉我吗我必须在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方法,但是用它们的方法显式设置它们更安全。

相关内容

  • 没有找到相关文章

最新更新