2015-03-17 2 views
1

Можно ли комбинировать маршруты для новостей и контента? Оба являются разными моделями и имеют свои собственные контроллеры.Laravel 5 Маршруты объединены

Link 1 = /news-item/ (news controller & model)  
Link 2 = /about-us/ (content controller & model) 

Как вы можете видеть в ссылке 1 и ссылке 2, я хочу, чтобы обе модели были единственными, без переходов.

Ниже пример кода, который я думал, будет работать, но это не так:

Route::get('/{page_url}/', '[email protected]'); 
Route::get('/{page_url}/', '[email protected]'); 

Я попытался это, но он получает только один из 2-х контроллеров. Я вижу очевидный конфликт.

Есть ли другой способ достижения единственного URL-адреса у более чем одного контроллера?

ответ

0

Единственный способ, которым я вижу, чтобы определить единый маршрут, как так:

Route::get('/{page_url}/', '[email protected]'); 

Затем в методе контроллера, проверьте, существует ли пробковое на новости или таблицы содержимого таблицы, а затем отобразить соответствующее содержание. Если ничего не найдено, покажите ошибку.

Другой способ я вижу использовать путь впереди,

Route::get('news/{page_url}/', '[email protected]'); 
Route::get('content/{page_url}/', '[email protected]'); 
0

Ну, это очень плохая практика, поскольку парадигма между уникальностью запрос-ответ теряется в consecuense для будущей оптимизации вы будет плохое время. Там нет никакого способа лет добиться того, чего вы хотите, если нет никакой разницы в URL:

Route::get('/foo', '[email protected]'); 
Route::get('/foo', '[email protected]'); 

Как вы можете увидеть очевидный конфликт, как вы можете заметить разницу между ними в запросе? Это невозможно. Лаварал будет переопределять каждый маршрут «ключ» с тем же значением (url)

+0

Я вижу, что путь iv сделал это плохо, но наглый есть способ? Я новичок в Laravel, немного удивленный, что такой запрос не может быть удовлетворен потрясающими предложениями по ларавею. Но если он не может, он не может – cardi777

+0

не может быть размещен в lavarel, потому что это не хорошая практика, это похоже на «нарушение правил». Laravel предназначен для разрешения запроса на каждый уникальный URL-адрес. Класс маршрута работает как HashMap, где его структура основана на «ключевом» => «значении», он помогает создавать даже кэшированную карту всех ваших URL-адресов для увеличения скорости ответа. – manix