【问题标题】:Yii customizing the display of url parametersYii 自定义 url 参数的显示
【发布时间】:2012-03-02 13:39:37
【问题描述】:

我正在尝试改变 Yii 显示我的“产品”页面网址的方式。 现在,它显示了这一点:

   localhost/~antonio/project/?r=site/product&id=HXW1410D260D0TB013&language=en

或者使用 urlFormat=path

   localhost/~antonio/project/en/product/id/HXW1410D260D0TB013

我需要网址看起来像这样:

   localhost/~antonio/project/en/product/HXW1410D260D0TB013

我查看了 Yii 文档,但找不到方法。

谢谢。

【问题讨论】:

    标签: php url yii


    【解决方案1】:

    将以下规则添加到您的 main.php 规则数组中:

    'product/<id:[A-Z0-9]+>'=>'site/product',
    

    所以你应该有类似的东西

    'urlManager' => array(
            'urlFormat' => 'path',
            'showScriptName' => false,
            'rules' => array(
                    'product/<id:[A-Z0-9]+>'=>'site/product',
                    '<controller:\w+>/<id:\d+>' => '<controller>/view',
                    '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
                    '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
             ),
      ),
    

    基本上规则格式如下:

    'product/<id:[A-Z0-9]+>'=>'site/product',
    

    中的术语表示您正在传递一个变量,所以

    <id:[A-Z0-9]+>
    

    表示如果正则表达式匹配(如果它只有大写字母和数字),则您正在传递 $_GET['id']。

    所以上面的规则意味着如果 url 匹配 product/something,然后将其发送到 site/product 并将“something”作为名为 id 的 $_GET 参数传递。

    希望澄清。

    【讨论】:

    • 或者'product/&lt;id:\w+&gt;'=&gt;'site/product', 也可以工作
    【解决方案2】:

    为此,请转到 config 文件夹中的 main.php 文件并取消注释以下内容以启用 path 格式的 URL:

    'urlManager' => array(
        'urlFormat' => 'path',
        'rules' => array(
            '<controller:\w+>/<id:\d+>' => '<controller>/view',
            '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
            '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
        ),
    ),
    

    【讨论】:

    • 这行不通,因为它期望产品ID是数字,同样从问题来看,他已经启用了网址管理器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 2012-09-09
    相关资源
    最近更新 更多