Разобралась. Наследовала класс от UrlRule, переопределила методы
createUrl()
и
parseRequest()
.
public function createUrl($manager, $route, $params)
{
if ($route == 'news-category/view' || $route == 'stat-page/view') {
if (isset($params['alias'])) {
return '/' . $params['alias'];
}
}
return false;
}
public function parseRequest($manager, $request)
{
$pathInfo = $request->getPathInfo();
$pathArray = explode('/', $pathInfo);
$params['alias'] = $pathInfo;
$alias = array_pop($pathArray);
if (StatPage::find()->published()->byAlias($alias)->one()) {
return ['stat-page/view', $params];
} elseif (NewsCategory::find()->published()->byAlias($alias)->one()) {
return ['news-category/view', $params];
}
return false;
}