Php 模块和参数的Yii2 url规则
我试图以这样一种方式配置Yii2 url管理器:如果在url中跳过控制器名称,它应该调用默认控制器以执行操作。我在没有动作参数的情况下成功地实现了这一点。但在操作名称中使用参数时遇到了问题 这是我的路线配置:Php 模块和参数的Yii2 url规则,php,url-rewriting,yii2,Php,Url Rewriting,Yii2,我试图以这样一种方式配置Yii2 url管理器:如果在url中跳过控制器名称,它应该调用默认控制器以执行操作。我在没有动作参数的情况下成功地实现了这一点。但在操作名称中使用参数时遇到了问题 这是我的路线配置: return [ 'catalog/category/<alias:[\w-]+>' => 'catalog/default/category', 'catalog/<action:\w+>' => 'catalog/default/&l
return [
'catalog/category/<alias:[\w-]+>' => 'catalog/default/category',
'catalog/<action:\w+>' => 'catalog/default/<action>',
];
当我访问下面的url时,它会完全加载。
但当我访问以下url时,它调用了正确的函数,但没有传递$alias值:
更新:
我使用了以下方法来声明模块式url规则:
以下是我在主配置文件中的内容:
'rules' => [
[
'pattern' => 'admin/<controller:\w+>/<action:[\w-]+>/<id:\d+>',
'route' => 'admin/<controller>/<action>'
],
[
'pattern' => 'admin/<module:\w+>/<controller:\w+>/<action:[\w-]+>/<id:\d+>',
'route' => 'admin/<module>/<controller>/<action>'
],
],
“规则”=>[
[
“模式”=>“管理//”,
“路由”=>“管理/”
],
[
“模式”=>“管理//”,
“路由”=>“管理员//”
],
],
管理员工作正常,这是我的第一个模块,因此已经提到了其他规则,以便帮助其他同事使用以下方法检索$alias的价值:
$alias = \Yii::$app->request->get('alias');
但这肯定不是问题的准确答案。我仍然不知道我做错了什么,因为我没有使用前面提到的方法得到值。它真的很好!
[
“name”=>“lang\u country\u seller\u catalog”,
“模式”=>“-/seller/catalog//”,
“路线”=>“卖方/目录//”,
],
[
'name'=>'lang\u country\u seller\u catalog\u attributes',
“模式”=>“-/seller/catalog/attributes/”,
“路由”=>“卖方/目录/属性/”,
],
您还有其他规则吗?显示您的urlManager配置。您是否尝试将正则表达式从[\w-]+更改为其他内容。例如。\w+或不带任何表达式直接使用。@soju查看我的更新question@Hanafi是的,我试过了,
$alias = \Yii::$app->request->get('alias');
'name' => 'lang_country_seller_catalog',
'pattern' => '<lang:\w+>-<country:\w+>/seller/catalog/<module>/<controller>/<action>',
'route' => 'seller/catalog/<module>/<controller>/<action>',
],
[
'name' => 'lang_country_seller_catalog_attributes',
'pattern' => '<lang:\w+>-<country:\w+>/seller/catalog/attributes/<module>',
'route' => 'seller/catalog/attributes/<module>',
],