据我所知:
View::share('foo','bar');
将在所有视图中提供$ foo。
但是,将View::share()
仅用于__construct()
是否正确?
因为来自外部__construct()
我无法使其发挥作用。
答案 0 :(得分:9)
View::share
应该在您的应用中任何位置可用。它使用的常见位置是视图作曲家,但它应该可以在路线中或任何需要的地方使用。
答案 1 :(得分:8)
是的,添加:
View::share('foo','bar');
您的routes.php文件中的将在所有视图中提供$ foo(值为'bar')。这对于Twitter Bootstrap的“活动”导航类特别有用。例如,你可以这样做:
View::share('navactive', '');
确保在所有视图中设置导航变量(因此不会抛出错误),然后在制作视图时(例如在控制器中),您可以传递:
return View::make('one')->with('navactive', 'one');
然后在您的视图中(最好是一些bootstrappy刀片模板),您可以执行以下操作:
<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>
答案 2 :(得分:0)
基本上,如果你想通过所有视图共享变量,你可能首先想要创建一个基本路由(例如:internalController.php
)作为父类,然后将其他控制器扩展为它的子节点(例如:{ {1}})。
是的,你很可能会在childController.php
的{{1}}中设置view::share('foo', $bar)
,因为无论何时初始化类都会进行午餐,这样父类就会为变量值提供服务给孩子们上课。