【问题标题】:Change UrlManager for just one controller只为一个控制器更改 UrlManager
【发布时间】:2014-11-19 23:12:31
【问题描述】:

我的 Yii 1.x 应用程序将 UrlManager 配置为生成/使用像 content/show.html 这样的 URL:

'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 -> UrlManager 来实现Qiang's solution,这允许我使用连字符的路由,即指向标准anActionNamean-action-name

我想保持这种状态,但我想扩展它,所以对于一个控制器(用于 AJAX 调用)它不使用 urlSuffix 并生成/使用这种格式的 URL:@987654329 @。

由于我是正则表达式的完全新手(几乎一无所知),因此在询问之前我没有进行太多自己的研究,因为我什至不知道实际搜索的位置和内容。

【问题讨论】:

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


    【解决方案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 配置的后缀部分

    【讨论】:

    • 我试图找到允许您使用多个后缀的插件,但规则会根据其后缀/前缀变成数组中的数组,但对于仅 1 个控制器来说,这似乎有点矫枉过正跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多