Yii2在URL中传递多个变量

时间:2019-06-27 06:22:03

标签: url yii2 yii2-advanced-app

我想生成可以处理多个参数的URL。 例如:

    www.example.com/product/index?brand=brand-name,
    www.example.com/product/index?category=category-name,

我希望该网址像:

   www.example.com/brand-name,
   www.example.com/category-name

尝试了一些url规则,但无效。

'rules' => [
       [
        'pattern' => '<brand:\w+(-\w+)*>/<category:\w+(-\w+)*>',
        'route' => 'product/index',
        'defaults' => [
                   'brand' => null,
                   'category' => null,
              ]
      ]
]

这是我的参考资料:

Reference question

1 个答案:

答案 0 :(得分:0)

为此,您必须坚持使用前缀版本。因此,品牌参数应始终以brand-为前缀,类别应始终以category-为前缀。否则,无法分辨什么。

添加以下规则。这会将匹配brand-\w+的所有内容放入brand参数中,并将其传递给product/index。类别相同。

'<brand:brand-\w+>' => 'product/index',
'<category:category-\w+>' => 'product/index',

查看它是否有效

public function actionIndex($brand = null, $category = null) {
    echo "Brand: $brand<br />";
    echo "Category: $category<br />";

    echo Url::toRoute(['dev/index', 'brand' => 'brand-name']) . '<br />';
    echo Url::toRoute(['dev/index', 'category' => 'category-name']) . '<br />';
}