У меня в конфиге такая маршрутизация
'vakansii/<country_slug>/<city_slug>' => 'vacancies/country-city',
'vakansii/<country_slug>/<category_slug>' => 'vacancies/country-category',
Когда я перейду по ссылке
domain.com/vacansii/ukraine/city
— все отлично
Но если я перейду по ссылке
domain.com/vacancii/ukraine/categoryname
— у меня ошибка 404.
Разбор находит совпадение по первому правилу и останавливается там. Как я могу сделать, если матч возвращает 404, чтобы продолжить разбор до конца и попробовать другие правила, прежде чем я получу последние 404?
Является ли это возможным?
Вот также пример моих действий контроллера.
// vakansii/<country_slug>/<city_slug>
public function actionCountryCity($country_slug, $city_slug)
{
$country = $this->findCountryBySlug($country_slug);
$city = $this->findCityBySlug($city_slug);
$query = Vacancies::find()
->where(['country_id' => $country->id, 'city_id' => $city->id])
->orderBy(['id' => SORT_DESC]);
// vakansii/<country_slug>/<category_slug>
public function actionCountryCategory($country_slug, $category_clug)
{
$country = $this->findCountryBySlug($country_slug);
$category = $this->findCategoryBySlug($category_clug);
$query = Vacancies::find()
->where(['country_id' => $country->id, 'category_id' => $category->id])
->orderBy(['id' => SORT_DESC]);
Задача ещё не решена.
Других решений пока нет …