2015-05-13 3 views
0

Я был бы признателен за помощь с маршрутизацией в Laravel 5.Laravel 5 - Маршрутизация с дополнительными приставками

У меня есть три модели: ReasearchLine, ReasearchGroup и публикация. Каждая группа ReasearchGroup принадлежит к ReasearchLine. Каждая публикация может принадлежать к ReasearchLine и к ReasearchGroup.

Моя дб схема выглядит следующим образом:

research_lines стол: ID

research_groups стол: идентификатор, research_line_id (ссылки ID на research_lines)

публикации таблица: id, research_line_id (ссылки id на research_lines), research_group_id (ссылки Идентификатор на research_groups)

Итак, я хочу, чтобы мои публикации, чтобы быть доступными:

  • /research-group-slug/research-line-slug/publications

    • показать все публикации, относящиеся к линии исследования и исследовательской группы
  • /research-line-slug/publications

    • показать все публикации, принадлежащие к исследовательской группе
  • /publications

    • показать все публикации

Я искал в пути префиксов для того, чтобы сделать это, но я не совсем понимаю, как я могу установить свои префиксы как необязательные.

Любое предложение?

Заранее спасибо. С уважением.

ответ

0

Маршрутизация в Laravel это так сложно, как вы сделаете это,

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

Вы передаете параметры, используя фигурные скобки синтаксиса

Route::get('/segment/{id}' ... 

Для гнездования вы идете

Route::get('/segment/{id}/segment/{id}' ... 

Для дополнительные параметры

Route::get('/segment/{id}/segment/{name?}', function($name = null) 

Когда дело доходит до факультативного материала, порядок, в котором вы размещаете маршруты, содержащие параметры, является обязательным.

По моему опыту карточный домик имеет тенденцию падать, если вы пытаетесь использовать слишком много параметров без каких-либо жестко закодированных префиксов или использовать необязательные параметры в чрезмерно вложенном виде. Маршрутизация - это сопоставление шаблонов в конце дня.

Im ленивый парень, так что я бы просто решить с

Route::get('/publications',... 
Route::get('/research-line/{slug}/publications',... 
ect ect 

Если вы хотите сказать, что вы должны иметь это конкретно, как вы говорите, то это выглядит, как он был дан ответ здесь - Laravel optional routing parameter

Хотя я лично не болею за это

+0

Hi alexander. Спасибо за помощь. – CarlosMaia

+0

Да, мне нужно, чтобы URL-адреса были точно такими же, как я сказал (требования клиентов). Я решил его несколькими путями с закрытием и прямым вызовом моих действий. Выглядит грязно, но пока я не нашел лучшего решения. – CarlosMaia

+0

@CarlosMaia, нет, это прекрасно, работая в отделе маркетинга в прошлом, я знаю, что вам больно в вещах, которые должны быть чрезмерно конкретными. Хорошо знать, что все это получилось в конце. –

Смежные вопросы