如何将数据放在laravel 5中的控制器的app.blade.php中

时间:2015-03-07 14:16:28

标签: laravel controller

我需要将一些动态数据从控制器放到app.blade.php,但我找不到任何控制器。我在哪里这样做? 感谢

2 个答案:

答案 0 :(得分:6)

要将数据注入布局视图(由其他人@extend编辑的视图),您可以使用视图编辑器。你如何做到这一点实际上非常好explained in the documentation

创建服务提供者(在app/Providers内):

<?php namespace App\Providers;

use View;
use Illuminate\Support\ServiceProvider;

class ComposerServiceProvider extends ServiceProvider {

    public function boot()
    {
        //
    }


    public function register()
    {
        //
    }
}

现在在boot()方法中注册视图编辑器:

View::composer('app', function($view){
    $view->with('foo', 'bar');
});

之后,不要忘记在config/app.php中注册服务提供商,方法是将其添加到providers数组中:

'providers' => [
    // other providers
    'App\Providers\ComposerServiceProvider'
]

答案 1 :(得分:2)

感谢lukasgeiter的回答。但是需要进行一些修改才能使其与Laravel渲染的所有视图配合使用。

您需要将“ *”字符用作通配符,以便将作曲家附加到所有视图上

View::composer('*', function($view){
    //any code to set $val variable
    $val = 'bar';
    $view->with('foo', $val);
});

app\Providers\ComposerServiceProvider.php的完整类就像

<?php 
namespace App\Providers;
use View;
use Illuminate\Support\ServiceProvider;

class ComposerServiceProvider extends ServiceProvider {

    public function boot()
    {
        View::composer('*', function($view){
            //any code to set $val variable
            $val = 'bar';
            $view->with('foo', $val);
        });
    }

    public function register()
    {
        //
    }
}

还在config\app.php文件中将服务提供商注册为

'providers' => [
    // Other Service Providers...
    App\Providers\ComposerServiceProvider::class,
],

否,您不能将$foo文件中的resources\views\layouts\app.blade.php变量用作

<div>
   {{$foo}}
</div>

这将以

呈现给客户端
<div>
   bar
</div>