Laravel 4 - 了解View :: share()

时间:2013-06-01 22:35:52

标签: laravel laravel-4

据我所知:

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

将在所有视图中提供$ foo。

但是,将View::share()仅用于__construct()是否正确?

因为来自外部__construct()我无法使其发挥作用。

3 个答案:

答案 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),因为无论何时初始化类都会进行午餐,这样父类就会为变量值提供服务给孩子们上课。