Передайте переменную всем представлениям, созданным в контроллере Laravel

Я организую свой веб-сайт по разделам, которые должны быть видны с первого взгляда на панели навигации (с active класс по соответствующей ссылке). В данный момент я проверяю каждую ссылку в панели навигации, соответствует ли текущий URL-адрес ссылке, но в каждом случае она работает только для 1 URL. Должно быть так:

  • article —————-> article раздел
  • article/create ——> article раздел
  • article/edit ———> article раздел
  • forum ——————-> forum раздел
  • forum/post/12345 -> forum раздел

Поскольку все мои «секции» используют контроллеры, я подумал, что, возможно, я смогу реализовать способ (возможно, с помощью конструктора) для передачи переменной (section) ко всем представлениям, возвращаемым контроллером, чтобы мой макет мог получить к нему доступ и установить active класс по правильной ссылке.

Но я не хочу делать return View::make('myView')->with('section', $this->section); каждый раз

Кто-нибудь знает, как этого добиться? Благодарю.

0

Решение

Вы должны использовать Request::segment(1) сравнить это с разделом.

Если ваш URL article/create и вы используете Request::segment(1) это вернет тебя article и не article/create

И на самом деле, вам не нужно ничего передавать Blade в этом случае, потому что это должно быть видно:

@if (Request::segment(1) == 'article')
class="active"@endif
4

Другие решения

Вы также можете разделить его между всеми представлениями, таким образом, будет легче изменить сегмент позже, если это изменится и избавит вас от необходимости редактировать Request :: сегмента (1) во всех ваших представлениях (если у вас есть больше)

Использование:
View::share('section', Request::segment(1));

Затем в каждом представлении получить значение с помощью: $section

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector