Laravel实现多个视图共享相同的数据

使用Laravel中的视图 Composers来解决这个问题

1、在App\Providers下创建一个ComposerServiceProvider类

<?php

namespace App\Providers;

use Illuminate\Support\Facades\View;
use Illuminate\Support\ServiceProvider;

class ComposerServiceProvider extends ServiceProvider {
    /**
     * Register bindings in the container.
     *
     * @return void
     */
    public function boot() {
        // 基于类的view composer
        View::composer(
            'admin.*', 'App\Http\ViewComposers\AdminComposer'
            //admin视图下所有的文件渲染时都执行
            //'admin.index', 'App\Http\ViewComposers\AdminComposer'
        );
    }

    /**
     * Register the service provider.
     *
     * @return void
     */
    public function register() {
        //
    }
}

在boot方法中定义要监听的视图,还可以使用通配符 * 匹配所有的视图。

2、注册ComposerServiceProvider
在config/app.php文件下的providers数组中进行注册

App\Providers\ComposerServiceProvider::class,

3、创建AdminComposer类
在app\Http\下创建ViewComposers目录,并创建文件AdminComposer

<?php
/**
 * Created by PhpStorm.
 * User: Corpize
 * Date: 2019-03-19
 * Time: 17:22
 */


namespace App\Http\ViewComposers;

use Illuminate\Http\Request;
use Illuminate\View\View;

class AdminComposer {
    public function compose(View $view) {
        $view->with([
            'admin' => 'q',
        ]);//填充数据
    }
}

填充需要的数据,ok

猜你喜欢

转载自blog.csdn.net/qq_39864544/article/details/88668453