【问题标题】:Yii2 create user friendly URL with parametersYii2 使用参数创建用户友好的 URL
【发布时间】:2015-03-17 10:54:03
【问题描述】:

您好,我要创建用户友好的 URL,但使用参数时它不起作用。

网址:

Url::to(['site/index', 'id' => 1]);

网址看起来像:

localhost/testApplication/frontend/web/index.php/site/index?id=1

/forntend/config/main.php

'urlManager' => [
        'class' => 'yii\web\UrlManager',
        'enablePrettyUrl' => true,
        //'showScriptName' => false,
        'rules' => [

        ],
    ],

我想要这样的输出

localhost/testApplication/frontend/web/index.php/site/index/id/1

然后如何访问控制器中的 id 值。

【问题讨论】:

  • 您只希望site/index 使用这个吗?
  • 是的,它只用于站点/索引
  • url management in Yii 2 的可能重复项

标签: yii2 yii2-advanced-app


【解决方案1】:
'rules' => [
  'site/index/id/<id:\d+>' => 'site/index'
  //'site/index/<id:\d+>' => 'site/index' Better solution
  //'<controller>/<action>/<id:\d+>' => '<controller>/<action>' Will be applied for all controllers and actions
],

Routing Doc.

在你的行动之后:

public function actionIndex($id)
{
  ...
}

【讨论】:

  • 如何为多个参数编写规则?
  • Url::to(['site/index', 'id' =&gt; 1, 'param2' =&gt; 'test']); // 'site/index/&lt;id:\d+&gt;/&lt;param2&gt;' =&gt; 'site/index' // public function actionIndex($id, $param2)
  • 是任何规则,如 site/index/*=>site/index
【解决方案2】:

真的很奇怪,对我来说使用参数'id'总是显示错误,我需要将参数更改为'user_id',但是在代码的其他部分我可以使用,真的不知道为什么,但尝试重命名参数。

【讨论】:

    猜你喜欢
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    • 2014-06-20
    • 2011-01-01
    • 1970-01-01
    • 2010-12-27
    • 1970-01-01
    相关资源
    最近更新 更多