9

From what I understand:

View::share('foo','bar');

Will make $foo available in all views.

However, is it correct to say View::share() can be used only in the __construct()?

Because from outside __construct() I can't make it to work.

4

3 回答 3

9

View::share应该在您的应用程序中的任何地方都可用。它使用的一个常见地方是视图作曲家,但它应该可以在路线内或您需要的任何地方使用。

于 2013-06-02T02:24:13.367 回答
9

是的,添加:

View::share('foo','bar');

在您的 routes.php 文件中,将使 $foo(值为 'bar')在所有视图中都可用。这对于诸如 Twitter Bootstrap 的“活动”导航类之类的东西特别有用。例如,您可以这样做:

View::share('navactive', '');

确保在所有视图中都设置了 navactive 变量(因此不会抛出错误),然后当您制作视图时(例如,在您的控制器中),您可以通过:

return View::make('one')->with('navactive', 'one');

然后在您的视图中(最好是一些引导刀片模板),您可以执行以下操作:

<ul class="nav">
    @if ( Auth::user() )
    <li @if ($navactive === 'one') class="active" @endif><a href="{{{ URL::to('one/') }}}">One</a></li>
    <li @if ($navactive === 'three') class="active" @endif><a href="{{{ URL::to('three/') }}}">Three</a></li>
    <li @if ($navactive === 'five') class="active" @endif><a href="{{{ URL::to('five/') }}}">Five</a></li>
    @endif
</ul>
于 2013-07-21T15:29:48.433 回答
0

基本上,如果您想通过所有视图共享变量,您可能首先要创建一个基本路由(例如:)internalController.php作为父类,然后将其他控制器扩展为它的子类(例如:)childController.php

是的,您很可能会view::share('foo', $bar)在 中__constructor()设置internalController.php,因为每当类初始化时它都会午餐,这样父类就会将变量值提供给子类。

于 2014-11-15T19:00:14.683 回答