У меня есть дочерний класс, который анализирует URL-адреса, которые расширяют CBaseUrlRule.
Функция parseUrl()
должна возвращать строку, которая является 'controller/action'
, но я хочу, чтобы она могла передавать именованные параметры для этого действия. Это возможно?
Например, URL может быть:
catalogName
/brand/brandName
/product/productname
/
Я хочу перенаправить этот путь на действие индекса каталога, причем это действие имеет:
public function actionIndex($catalogName, $brandName, $productName) {
//do smthng
}
Я бы сделал простое правило URL-адреса, но затем мне нужно, чтобы класс обрабатывал определенную информацию перед разбором URL-адреса.
Вы можете использовать Именованный параметр, отклоняя правила в main.php, например:
array(
'components' => array(
......
'urlManager' => array(
'urlFormat' => 'path',
'rules' => array(
'<catalogName>/brand/<brandName>/product/<productname>/' => 'catalog/index',
),
),
),
);