Yii2 Несколько переменных, которые будут переданы в URL - PullRequest
0 голосов
/ 27 июня 2019

Я хочу создать URL-адреса, которые могут обрабатывать несколько параметров.Например:

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

Я хочу, чтобы URL был таким:

   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,
              ]
      ]
]

Этомой справочник:

справочный вопрос

1 Ответ

0 голосов
/ 27 июня 2019

Для этого вам нужно придерживаться версии с префиксом. Таким образом, для параметра бренда всегда должен стоять префикс 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 />';
}
...