仅为一个控制器更改UrlManager

时间:2014-09-25 08:45:06

标签: php url yii url-rewriting url-routing

我的Yii 1.x应用程序已将UrlManager配置为生成/使用content/show.html之类的网址:

'urlManager'=>array
(
    'class'=>'UrlManager',
    'showScriptName'=>false,
    'urlFormat'=>'path',
    'urlSuffix'=>'.html',
    'rules'=>array
    (
        '<controller:\w+>/<id:\d+>'=>'<controller>/view',
        '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
        '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
        '<controller:[\w\-]+>/<action:[\w\-]+>'=>'<controller>/<action>'
    )
),

我也覆盖了CUrlManager - &gt; UrlManager实施Qiang's solution,允许我使用指向标准an-action-name的{​​{1}}路由连字符。

我希望保持这种方式,但我想扩展它,因此对于一个控制器(用于AJAX调用),它不使用anActionName并生成/使用URL采用以下格式:urlSuffix

由于我在正则表达式中完成新手(几乎无知),在我提出要求之前,我还没有进行过很多自己的研究,因为我甚至都不知道,在哪里以及为什么实际上是搜索。

1 个答案:

答案 0 :(得分:1)

您始终可以将后缀作为模式的一部分,而不是全局配置

例如:

    'ajax/<action:\w+>'=>'ajax/<action>',
    '<controller:\w+>/<id:\d+>.html'=>'<controller>/view',
    '<controller:\w+>/<action:\w+>.html'=>'<controller>/<action>',
    '<controller:\w+>/<action:\w+>/<id:\d+>.html'=>'<controller>/<action>',
    '<controller:[\w\-]+>/<action:[\w\-]+>.html'=>'<controller>/<action>',

和ofc删除urlManager配置的后缀部分