Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 是否可以在CodeIgniter 4中的路由中使用动态控制器名称?_Php_Codeigniter 4 - Fatal编程技术网

Php 是否可以在CodeIgniter 4中的路由中使用动态控制器名称?

Php 是否可以在CodeIgniter 4中的路由中使用动态控制器名称?,php,codeigniter-4,Php,Codeigniter 4,我想使用这里说的路线本地化 因此,我需要添加如下路由规则: $routes->get(“{locale}/books”,“App\books::index”) 但我想为所有控制器制定此规则,而不是为所有控制器指定规则。所以我增加了规则: $routes->add(“{locale}/(:segment)(:any)”,“$1::$2”) 我使用方法index()让控制器登录。当我转到mydomain.com/Login时,方法index()已成功加载。但是,当我转到mydomain.com/en

我想使用这里说的路线本地化

因此,我需要添加如下路由规则:
$routes->get(“{locale}/books”,“App\books::index”)

但我想为所有控制器制定此规则,而不是为所有控制器指定规则。所以我增加了规则:
$routes->add(“{locale}/(:segment)(:any)”,“$1::$2”)

我使用方法
index()
让控制器
登录。当我转到
mydomain.com/Login
时,方法
index()
已成功加载。但是,当我转到
mydomain.com/en/Login
(正如我希望使用我的路由)时,我收到了404错误消息-“找不到控制器或其方法:\App\Controllers$1::index”。但语言环境已正确定义和设置

如果我将路由更改为
$routes->add(“{locale}/(:segment)(:any)”,“Login::$2”)
然后
mydomain.com/en/Login
按我的要求成功加载。但是用这种方式,我必须为每个控制器设置路由,并且我想设置一个路由来与所有控制器一起工作


是否可以通过设置动态控制器名称来设置路由?

我不确定是否可以直接设置路由,但这里有一个解决方法:

$routes->add(“{locale}/(:segment)/(:any)”,“Rerouter::reroute/$1/$2”)

然后,您的
重新外部
类如下所示:



是的,我也这么认为-最好有一个端点,所有请求都将通过它。但当我试图获取类的实例时,我得到了一个错误——找不到类“User”。My
Rerouter
类和My
User
类是同一命名空间中的控制器
App\controllers
然后它可以正常工作。动态$className由于某些原因无法工作。其他选项:转到CodeIgniter论坛,将您的问题更改为功能请求。我认为它应该包含在框架中!