Каков наилучший способ исправить URL в определенных моделях?У меня есть несколько моделей со слагом и схема URL:
Route::get('/abc/{id}/{slug?}', 'AbcController@show')->name('abc.show');
Route::get('/abc/{id}/{slug?}/def-show', 'AbcDefController@show')->name('abc.def.show');
Route::get('/abc/{id}/{slug?}/def', 'AbcDefController@create')->name('abc.def.create');
На каждом контроллере я спрашиваю это так:
if ($slug !== $abc->slug) {
return redirect()->to(route([controller-function-specific], [$abc->id, $abc->slug]));
}
return view('[blade-template]', compact(['abc']))->withCanonical($abc->slug);
Какой подход лучше?Я пробовал это с наблюдателями («извлечено»), но мне не нужно это для каждой функции / действия в контроллере (например, «индекс», который перечисляет только все элементы и не нуждается в слаге), а также другой маршрут.
Мое решение работает, но оно избыточно, потому что я вставляю эту конкретную часть во множество функций / действий.Я мог бы записать это в модель, но это не решило бы избыточные вызовы вроде checkSlug ('[ROUTE]').
Есть идеи?