有什么方法可以在 YII 框架中有条件地触发 urlManager
Is there any way to trigger urlManager conditionally in YII framework
我有以下代码-
'urlManager'=>array(
'urlFormat'=>'path',
//'showScriptName'=>false,
//'caseSensitive'=>false,
'rules'=>array(
''=>'site/home',
'logout'=>'site/logout',
'login' =>'site/login',
'page/about' => 'page/show/id/1',
'<cat0:[a-zA-Z\-0-9]+>/<cat1:[a-zA-Z\-0-9]+>/<name:[a-zA-Z\-0-9]+>' => 'product/single',
'<cat0:[a-zA-Z\-0-9]+>/<cat1:[a-zA-Z\-0-9]+>' => 'product/products',
'<cat0:[a-zA-Z\-0-9 ]+>' => 'product/subcategories',
),
),
但是当我使用任何站点路径示例时-
/site/contact/
Yii 认为它是 cat0 和 cat1 因此它将我转发到 product/products
控制器 $_GET['cat0'] = site
和 $_GET['cat1'] = contact
.
有什么办法吗?
这是错误的。您的规则是:
any_word/any_word
将转到 product/products
即site/contact
将转到 product/products
所以试试这个:products/<cat0:[a-zA-Z\-0-9]+>/<cat1:[a-zA-Z\-0-9]+>' => 'product/products',
现在products/cat1/cat2
会去/product/products
要了解更多信息,请阅读此部分:Adding Rules Dynamically
我有以下代码-
'urlManager'=>array(
'urlFormat'=>'path',
//'showScriptName'=>false,
//'caseSensitive'=>false,
'rules'=>array(
''=>'site/home',
'logout'=>'site/logout',
'login' =>'site/login',
'page/about' => 'page/show/id/1',
'<cat0:[a-zA-Z\-0-9]+>/<cat1:[a-zA-Z\-0-9]+>/<name:[a-zA-Z\-0-9]+>' => 'product/single',
'<cat0:[a-zA-Z\-0-9]+>/<cat1:[a-zA-Z\-0-9]+>' => 'product/products',
'<cat0:[a-zA-Z\-0-9 ]+>' => 'product/subcategories',
),
),
但是当我使用任何站点路径示例时-
/site/contact/
Yii 认为它是 cat0 和 cat1 因此它将我转发到 product/products
控制器 $_GET['cat0'] = site
和 $_GET['cat1'] = contact
.
有什么办法吗?
这是错误的。您的规则是:
any_word/any_word
将转到 product/products
即site/contact
将转到 product/products
所以试试这个:products/<cat0:[a-zA-Z\-0-9]+>/<cat1:[a-zA-Z\-0-9]+>' => 'product/products',
现在products/cat1/cat2
会去/product/products
要了解更多信息,请阅读此部分:Adding Rules Dynamically