【发布时间】:2021-08-25 12:15:43
【问题描述】:
我有 cakephp4.2 项目,我已经实现了多语言方法,其中当前语言在会话中 sept。所有语言的网址都相同。
我也想在 url 中添加语言参数。我在config/routes.php 文件中尝试了以下代码,它适用于普通(非管理员前缀)网址。但不适用于Admin 前缀网址。
use Cake\Routing\RouterBuilder;
$routes->setRouteClass(DashedRoute::class);
$routes->scope('/', function (RouteBuilder $builder) {
$builder->connect('/', ['controller' => 'Clients', 'action' => 'index']);
$builder->connect('/:language/:controller/:action/*', array(), array('language' => 'en|ar'));
$builder->connect('/:language/:controller', array('action' => 'index'), array('language' => 'en|ar'));
$builder->connect('/:language', array('controller' => 'Clients', 'action' => 'index'), array('language' => 'en|ar')) ;
$builder->fallbacks();
});
$routes->prefix('Admin', function (RouteBuilder $routes) {
$routes->connect('/', ['controller' => 'Users', 'action' => 'login']);
//added below line for language but it is not working
//$routes->connect('/:language', array('controller' => 'Users', 'action' => 'login'), array('language' => 'en|ar')) ;
$routes->fallbacks(DashedRoute::class);
});
工作网址
localhost/cake4-lng/
localhost/cake4-lng/en
localhost/cake4-lng/ar
localhost/cake4-lng/en/controller
localhost/cake4-lng/admin/users/dashboard /*notice there is no language param with Admin*/
无效的网址
localhost/cake4-lng/en/admin/users/dashboard
localhost/cake4-lng/ar/admin/users/dashboard
以上 2 个网址的错误是:
找不到AdminController。
【问题讨论】:
-
配置中注释掉的管理路由仅适用于
login操作,但您的示例 URL 列表中提到了dashboard操作。 -
我的项目中有任何控制器和操作,我想要一些我为非管理员前缀所做的通用操作
-
我不是路由专家,所以对此我无能为力。我只是想知道您的
dashboardURL 不起作用的原因是否是因为您没有为它设置管理路由,仅用于login。
标签: cakephp routes internationalization cakephp-4.x