Структура урлов достаточно сложная (связано с переносом сайта с другой системы)
На фронте rules для urlManager выглядят вот так:
Код: Выделить всё
// Stuffs
['pattern'=>'stuff/<razdel>/<category>/<slug>/<alias>', 'route'=>'stuff/view'],
['pattern'=>'stuff/<razdel>/<category>/<id>', 'route'=>'stuff/category'],
['pattern'=>'stuff/<razdel>/<id>', 'route'=>'stuff/razdel'],
['pattern'=>'stuff/search/', 'route'=>'stuff/search'],
['pattern'=>'/', 'route'=>'stuff/index'],
Код: Выделить всё
Url::to(['stuff/view', 'razdel'=>$razdel->slug, 'category' => $this->category->slug, 'slug' => $this->slug, 'alias' => $this->getAlias()])
Вот тут возник небольшой затык. Сохраняю-то я модель с бэкенда, а там инициализирован компонент urlManager с настройками
Код: Выделить всё
[
'class'=>'yii\web\UrlManager',
'enablePrettyUrl'=>true,
'showScriptName'=>false,
'rules'=>[
// url rules
]
];
Тогда я поступил так - проинициализировал новый urlManager прямо в модели c нужным мне конфигом
Код: Выделить всё
public function getUrl()
{
$razdel = $this->category->getParent()->one();
$urlManage = new UrlManager([
'enablePrettyUrl'=>true,
'showScriptName'=>false,
'rules'=> [
// Stuffs
['pattern'=>'stuff/<razdel>/<category>/<slug>/<alias>', 'route'=>'stuff/view'],
['pattern'=>'stuff/<razdel>/<category>/<id>', 'route'=>'stuff/category'],
['pattern'=>'stuff/<razdel>/<id>', 'route'=>'stuff/razdel'],
['pattern'=>'stuff/search/', 'route'=>'stuff/search'],
['pattern'=>'/', 'route'=>'stuff/index'],
]
]);
$url = $urlManage->createUrl(['stuff/view', 'razdel'=>$razdel->slug, 'category' => $this->category->slug, 'slug' => $this->slug, 'alias' => $this->getAlias()]);
return $url;
}