微信扫一扫打赏支持

【实例】laravel给所有视图共享数据

【实例】laravel给所有视图共享数据

一、总结

一句话总结:

1、创建service provider:在service provider的【boot方法】中调用【view的composer方法】:【View::composer('*','App\Http\Controllers\Home\CommonController');】
2、注册服务:【在config的app.php中注册服务】:App\Providers\Fry\ComposerServiceProvider::class,
3、【在公共控制器CommonController中补充composer方法】:public function compose(View $view){}
在service provider的【boot方法】中调用【view的composer方法】
public function boot()
{
    View::composer('*','App\Http\Controllers\Home\CommonController');
    //这个地方可以调用你已经建好的任何一个控制器,前面的*号代表全局共享,
    //如果指定了视图文件下面的文件夹,可以使用admin.auth.*这种写法,
    //表明你要共享数据的文件范围
}


【在公共控制器CommonController中补充composer方法public function compose(View $view){
    //与所有视图共享数据
    //处理过的用户信息
    $user_f=User\UserHandle::handle_user_info();
    $user_f=json_encode($user_f);
    $view->with([
        'user_f' => $user_f,
    ]);
}

 

 

二、【实例】laravel给所有视图共享数据

 

1、创建service provider

在service provider的boot方法中调用view的composer方法

 

<?php

namespace App\Providers\Fry;

use App\Model\Home\User\UserHandle;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\View;

class ComposerServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        View::composer('*','App\Http\Controllers\Home\CommonController');
        //这个地方可以调用你已经建好的任何一个控制器,前面的*号代表全局共享,
        //如果指定了视图文件下面的文件夹,可以使用admin.auth.*这种写法,
        //表明你要共享数据的文件范围
    }
}

 

 

 

2、注册服务

 

 

//用来为所有视图共享数据
App\Providers\Fry\ComposerServiceProvider::class,

 

3、在公共控制器CommonController中补充composer方法

<?php

namespace App\Http\Controllers\Home;

use App\Model\Home\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Auth;
use Illuminate\View\View;

class CommonController extends Controller
{
    public function __construct()
    {
        //验证用户是否登录
        $this->middleware('home.auth');

        //可以在这里将用户信息传递到页面:处理了关键信息的用户信息

    }

    /**
     * 成功信息
     * @param $message
     * @return \Illuminate\Http\JsonResponse
     */
    protected function success($message){
        //这样返回信息的时候只用返回$this->success('成功')
        return response()->json(['message'=>$message,'valid'=>1]);
    }

    /**
     * 错误信息
     * @param $message
     * @return \Illuminate\Http\JsonResponse
     */
    protected function error($message){
        return response()->json(['message'=>$message,'valid'=>0]);
    }

    public function compose(View $view){
        //与所有视图共享数据
        //处理过的用户信息
        $user_f=User\UserHandle::handle_user_info();
        $user_f=json_encode($user_f);
        $view->with([
            'user_f' => $user_f,
        ]);
    }


}

 

 

4、这样前端就可以获取到user_f数据了

 

 

 

 
posted @ 2021-04-01 08:20  范仁义  阅读(128)  评论(0编辑  收藏  举报