Url Manager 在 YII 中隐藏控制器名称和函数名称
Posted
技术标签:
【中文标题】Url Manager 在 YII 中隐藏控制器名称和函数名称【英文标题】:Url Manager hide controller name and function name in YII 【发布时间】:2016-11-26 08:37:01 【问题描述】:我是 YII 框架的新手。我必须隐藏默认的控制器名称和函数名称。 例如:
(现有网址:http://localhost/food/store/home)
(必填网址:http://localhost/food/)
在 YII 框架配置页面中,他们将urlManager
声明为:
配置页面中的 URL 管理:
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName' => false,
'rules'=>array(
'<controller:\w+>/<id:\d+>'=>'<controller>/view',
'<controller:\w+>'=>'<controller>/index',
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
),
'showScriptName'=>false,
)
默认控制器声明:
'defaultController'=>'store'
【问题讨论】:
【参考方案1】:您可以不使用<controller>
或<action>
之类的占位符来创建特定规则,您只需确保将它们添加到一般情况的规则之前。
'urlManager' => [
'urlFormat' => 'path',
'showScriptName' => false,
'rules' => [
//Add the rules for the specific cases
'' => 'store/home',
// The general case rules go after the specific cases
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>' => '<controller>/index',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
],
],
【讨论】:
【参考方案2】:使用别名将解决问题'urlManager' => array(
'urlFormat' => 'path',
'rules' => array(
'admin' => '/admin/default',
'mobile' => '/mobile/default', 'mobile/<alias:fees|aboutus|contactus|terms|policy|faq|aml|legal|news|testimonial>' => 'mobile/default/<alias>',
'<alias:fees|about|contactus|terms|privacypolicy|faq|aml|legal>' => 'site/<alias>',
'<module:\w+>/<controller:\w+>/<action:\w+>' => '<module>/<controller>/<action>',
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
),
'showScriptName' => false,
),
【讨论】:
以上是关于Url Manager 在 YII 中隐藏控制器名称和函数名称的主要内容,如果未能解决你的问题,请参考以下文章