@joli

Можно ли использовать один метод для 2-х роутов?

В общем применил такой прием, для того, чтобы не создавать еще один метод для категорий и копипастить туда код с минимальными дополнениями. Но правильно ли это?
Route::get('/shop', 'Front\ShopController@index');
Route::get('/cat/{slug}', 'Front\ShopController@index');
  • Вопрос задан
  • 99 просмотров
Решения вопроса 1
agoalofalife
@agoalofalife
Team Lead
С точки зрение работы кода, у вас по двум маршрутам, обрабатывается request в одном контроллере и в одном методе, работать конечно будет.
Но с точки зрения кода - это конечно не perfect. Тут как в классике, "Все смешалось в доме Облонских".
- Контроллер кончено ж должен быть другой, и в данный момент не потому что просто так должно быть, а просто название route и контроллера вызывают диссонанс в первую очередь.
- Во вторых есть такой термин как REST API, и в духе Laravel больше подходит метод show, документация

Еще мне не нравиться ваш namespace Front, и есть ощущение что он больше не нужен, чем нужен.
И наверное category всегда лучше чем cat или c.
Еще можете прочитать про resources

Ну и главное, про сокращение кода:
- "Чтобы не создавать еще метод"(где-либо)
- Чтобы не создавать еще класс
- Чтобы не создавать еще таблицу в базе
- Чтобы не создавать еще ...
Более вероятно будет приводить к плохому коду и путаницы. Мало кода это не равно хороший код. В коммерческой разработке часто очень большая предметная область, с этим надо работать, поддерживать и тому подобное - это порождает больше кода, потому что:
- Лучше (иногда) создать еще метод
- Лучше (иногда) вынести в отдельный класс
- Лучше (иногда) нормализовать и вынести в отдельную таблицу
Advice - Прочтите документацию Laravel✌️
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
JhaoDa
@JhaoDa
LaravelRUS Team
Можно. Даже для трёх можно. И для десяти тоже.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы