2016年9月30日 星期五

Laravel 中的视图数据共享

总结了几种 Laravel 中数据共享的方法

一、使用 AppServiceProvider

直接在 AppServiceProvider 中添加:
    view()->composer('*', function($view) {
        $foo = 'bar';
        $view->with(compact('foo'));
    });
  • 共享所有模版,在 blade 模版中直接 {{ $foo }} 来引用

二、创建基础控制器

class BaseController extends Controller
{
    protected $foo;

    public funciton __construct()
    {
        $this->foo = 'bar';
    }
}
控制器通过继承它来得到共享数据
    class FooController extends BaseController
    {
        public function foo()
        {
            dd($this->foo);
        }
    }

三、创建 ComposerServiceProvider

// app/Providers/ComposerServiceProvider.php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class ComposerServiceProvider extends ServiceProvider
{
    public function boot()
    {
        view()->composer(
            'foo.index', 'App\Http\ViewComposers\FooComposer'
        );
        // ...
    }

    public function register()
    {
        # code...
    }
}
// app/Http/ViewComposers/FooComposer.php

namespace App\Http\ViewComposers;

use Illuminate\Contracts\View\View;

class FooComposer
{
    public function compose(View $view)
    {
        $view->with('foo', $bar);
    }
}
在 config/app.php 中注册服务之后就可以在 post/index.blade.php 就可以获取数据了。以上

from : http://laravel.so/tricks/404c3bd6187f1151010c2dc72d1ace16

沒有留言:

wibiya widget