如何从 Laravel 5 中的控制器将数据放入 app.blade.php

How put data in app.blade.php from controller in Laravel 5

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

要将数据注入布局视图(由其他人@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'
]

感谢 lukasgeiter 的回答。但它需要一些修改才能使其与 Laravel.

呈现的所有视图一起使用

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

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

如此完整 app\Providers\ComposerServiceProvider.php 的 class 就像,

<?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,
],

现在您可以在 resources\views\layouts\app.blade.php 文件中使用 $foo 变量作为

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

这将呈现给客户端

<div>
   bar
</div>