【问题标题】:Pass variable to all views created in a Laravel Controller将变量传递给在 Laravel 控制器中创建的所有视图
【发布时间】:2014-12-03 01:09:33
【问题描述】:

我正在按部分组织我的网站,这些部分在我的导航栏上乍一看应该是可见的(在相应的链接上带有 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);

有人知道如何实现吗?谢谢。

【问题讨论】:

    标签: php laravel laravel-4 blade


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 哦,这是个好主意。我从没想过直接在视图中执行此操作,但是由于我对所有内容都使用了路由分组,所以它应该可以正常工作!感谢您的提示
    • 这比 Request::is('blah*);其他地方列出的方法谢谢。
    【解决方案2】:

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

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

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

    【讨论】:

    • 谢谢,但我的导航是直接插入布局中的局部视图
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-13
    • 2014-12-08
    • 1970-01-01
    • 1970-01-01
    • 2015-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多