Как правильно сделать роутинг в Laravel?

234
26 июля 2017, 23:19

Здравствуйте. При создании сайта изначально были роуты для категорий и подкатегорий:

Route::pattern('category', '[a-zA-Z0-9\-]+'); // Такие паттерны у всех роутов
Route::get('/{auto}/{country}/', ['as' => 'country', 'uses' => 'AutoController@country']);
Route::get('/{auto}/{country}/archive/', ['as' => 'country.archive', 'uses' => 'AutoController@countryArchive']);
Route::get('/{auto}/{country}/{mark}/', ['as' => 'mark', 'uses' => 'AutoController@mark']);
Route::get('/{auto}/{country}/{mark}/archive/', ['as' => 'mark.archive', 'uses' => 'AutoController@markArchive']);

В контроллере если данных нету то вызываю App::abort(404); Когда добавил новые роуты, то перестали работать старые (выдавалась 404 ошибка), выше написаны чем прошлые.

Route::get('/{category}/', ['as' => 'category.list', 'uses' => 'ArticleCategoriFrontendController@list']); 
Route::get('/{category}/{article_slug}/', ['as' => 'article', 'uses' => 'ArticleCategoriFrontendController@article']);

Вот у меня и возник вопрос как этого можно избежать, уже использовал стандартные функции как link_to_route, link_to_action но по прежнему ничего. Код:

<?php echo link_to_route('category.list', 'obuchenie', ['obuchenie'] ); ?>
<?php echo link_to_action('ArticleCategoriFrontendController@list', 'obuchenie2', ['obuchenie'] ) ?>
<a href="{{route('category.list',['obuchenie']) }}">obuchenie3</a> 

Оказывается оно перекидывает на другой роут

 Route::get('/{page}/', ['as' => 'page', 'uses' => PageController@page']);
Answer 1

Ваши новые маршруты конфликтуют со старыми:

'/{category}/' конфликтует с '/{page}/', а

'/{category}/{article_slug}/' с '/{auto}/{country}/'.

Чтобы этого избежать, попробуйте добавить статичный сегмент к новым маршрутам, например:

'/articles/{category}/'

'/articles/{category}/{article_slug}/'

READ ALSO
Сегментация текста

Сегментация текста

Добрый день всем

220
Переставить элементы массива

Переставить элементы массива

Последовательность чисел от 0 до N-1 (N >= 2 - целое) случайным образом перемешали, получив массив A длины NНеобходимо изменить массив так, чтобы...

217
Сортировка точек на плоскости по/против часовой стрелки

Сортировка точек на плоскости по/против часовой стрелки

Есть набор точек типа std::pair<int, int>, представляющих собой вершины некоторого многоульника (вообще говоря, невыпуклого)Дана некоторая вершина...

206