是否可以拥有这种数组:
'urlManager' => array(
'urlFormat' => 'path',
'showScriptName' => false,
'urlFormat' => 'path',
'rules' => array(
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
'/admin' => '/admin/home',
'/admin/<controller:\w+>' => '/admin/<controller>',
'/admin/<controller:\w+>/<action:\w+>/<id:\d+>' => '/admin/<controller>/<action>',
'/admin/<controller:\w+>/<action:\w+>' => '/admin/<controller>/<action>',
),
),
从数据库表中读取?
为什么:我正在制作一个CMS,我要在其中定义自定义的 类别,网页和帖子 ,这样我就不会不使用基本控制器。
示例:我的页面控制器是PagesController,我可以在URL管理器中制定如下规则:
/pages/some-page-alias
我希望能够将/pages/
,/categories/
和/posts/
更改为本地化的内容,这意味着可以更改它,即在波斯尼亚语中:
/kategorije/ => /categories/,
/stranice/ => /pages/,
/clanci/ => /posts/,
是否有解决方案,如何做到这一点?
是的,我没有尝试任何东西,因为我不知道......答案 0 :(得分:1)
你可以这样做:
'urlManager' => array(
'urlFormat' => 'path',
'showScriptName' => false,
'urlFormat' => 'path',
'rules' => array(
'kategorije/<id:\d+>' => 'category/view',
'kategorije/<action:\w+>/<id:\d+>' => 'category/<action>',
'kategorije/<action:\w+>' => 'category/<action>',
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
'/admin' => '/admin/home',
'/admin/<controller:\w+>' => '/admin/<controller>',
'/admin/<controller:\w+>/<action:\w+>/<id:\d+>' => '/admin/<controller>/<action>',
'/admin/<controller:\w+>/<action:\w+>' => '/admin/<controller>/<action>',
),
),
URLManager按首先列出的内容划分优先级。因此,如果您在标准规则之上放置自定义规则,它将首先运行这些规则。一旦找到适用它的规则就会爆发。
答案 1 :(得分:0)
至于我,你的问题不明确。
如果你想在DB中存储数组,你可以在serialize
之前完成它。
如果您希望多个名称指向同一个控制器,则可以使用以下规则:
array(
'<_c:(stranica|page)>/<id:\d+>'=>'myController/view',
)
在这种情况下,如果有任何网址
http://example.com/stranica/123
http://example.com/page/123
请求,它将指向
http://example.com/myController/view?_c=stranica&id=123
http://example.com/myController/view?_c=page&id=123
相应。请参阅API中的CUrlManager示例。