xmihu945 2011-10-31 14:31:44 4846次浏览 6条回复 0 0 0

想要类似 http://hostname/controllerID/actionID.html?id=123 这种形式的url,不知道如何配置

现在的配置:

'urlManager'=>array(
    'showScriptName'=>false,
    'urlFormat'=>'path',
    'urlSuffix'=>'.html',
),
$this->createUrl('controllerID/actionID', array('id' => 123));  

生成的url是 /controllerId/actionID/id/123.html

用的是YII1.1.8,貌似urlFormat只能取get或者path,有办法二者合起来用吗?谢谢。

  • 回复于 2011-10-31 14:40 举报
    <?php
    return array(
        'urlFormat'=>'path',
        'showScriptName'=>false,
        'caseSensitive'=>false,
        'rules'=>array(
            '<controller:\w+>/<action:\w+>.html?id=<id:\d+>'=>'<controller>/<action>',
            '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
        ),
    );
    

    你想要的格式.
    不过这样的格式貌似用处不是很大,既不是友好的url,又不是一般的格式.

  • 回复于 2011-10-31 15:15 举报

    谢谢,不过这样做的话,对于不同的参数都要定义rules,有没有简单一点的,只把controllerid和actionid放在path中,其他参数放在query中。

  • 回复于 2011-10-31 15:53 举报
    <?php
    return array(
        'urlFormat'=>'path',
        'urlSuffix'=>'.html',
        'showScriptName'=>false,
        'caseSensitive'=>false,
        'rules'=>array(
            '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
        ),
    );
    

    [/code]还是不明白你想这样做的目的是什么.

    其它参数放在query里面? 即使是 /controllerId/actionID/id/123.html, 你也可以直接用$_GET['id']取出来的

  • 回复于 2011-10-31 16:08 举报

    好帅,多谢。
    主要是担心参数太多的话,url会比较长,所以希望放在query里。

  • 回复于 2011-10-31 16:40 举报

    这...你的担心,还是会出现的...跟这个路径生成出来的没啥关系

  • 回复于 2012-12-17 10:45 举报

    太帅了 哈哈 我的后台搜索参数过多全path路径太深 chrome 返回101 只有这样才能既用path 又用get

您需要登录后才可以回复。登录 | 立即注册