Yii2网址管理员不使用get参数

时间:2016-06-15 13:27:42

标签: php url-rewriting yii2 yii2-advanced-app yii-url-manager

我创建了一个名为catalog的模块,目前在默认控制器中有两个动作:

  1. 的actionIndex
  2. actionLineProducts
  3. 在索引视图中我有一些链接来运行line-product的动作,url是以下结果:

    Url::to(['line-products', 'line' => $line->name])
    

    我的目标是获得像

    这样的链接
      

    目录/ {线路名}

    其中line-name是我发送给行动LineProducts的参数。 我的urlManager配置是:

    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
          '<moduls:catalogue>/<controller:default>/<action:line-products>/<line:*>' => '<module>/<line>',
          '<controller:\w+>/<id:\d+>' => '<controller>/view/',
          '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
          '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
     ],
    

    .htaccess配置:

    RewriteEngine on
    # If a directory or a file exists, use it directly
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    # Otherwise forward it to index.php
    RewriteRule . index.php
    

    任何人都可以解释为什么我的网址总是如此:

      

    http://my-site.dev/catalogue/default/line-products?line= {线名称}

1 个答案:

答案 0 :(得分:0)

您交换了配置。关键是从浏览器传递的url模式。值是路线。由于您使用的是特定模块,控制器和操作,因此您可以直接传递这些模块:

'rules' => [
    'catalogue/<line>' => 'catalogue/default/line-products'
    ...
]

您可以阅读Yii2指南中的Routing and Url Creation page以获取更多信息。