将变量传递给在Laravel Controller中创建的所有视图

时间:2014-10-08 11:27:45

标签: php laravel laravel-4 blade

我正在按部分组织我的网站,这些部分应该在我的导航栏上显示(在相应的链接上有一个active类)。目前,如果当前网址与链接的网址匹配,我会检查导航栏中的每个链接,但它在每种情况下仅适用于1个网址。它应该是这样的:

  • article ----------------> article部分
  • article/create -----> article部分
  • article/edit --------> article部分
  • forum -------------------> forum部分
  • forum/post/12345 - > forum部分

由于我所有的"部分"使用控制器,我想也许我可以实现一种方式(可能使用构造函数)将变量(section)传递给控制器​​返回的所有视图,以便我的布局可以访问它并设置正确链接上的active课程。

但我不想每次都要return View::make('myView')->with('section', $this->section);

任何人都知道如何实现这一目标?感谢。

2 个答案:

答案 0 :(得分:4)

您应该使用Request::segment(1)将其与部分进行比较。

如果您的网址为article/create并且您使用的是Request::segment(1),则会返回article而不是article/create

事实上,在这种情况下,你不必向Blade传递任何东西,因为它应该是可见的:

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

答案 1 :(得分:1)

您也可以在所有视图之间共享它,这样如果更改后更容易更改段,并使您不必在所有视图中编辑Request :: segment(1)(如果您有更多)

使用: View::share('section', Request::segment(1));

然后在每个视图中获取值:$section