【实例】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方法


【实例】laravel给所有视图共享数据_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、注册服务

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

 

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

 



//用来为所有视图共享数据
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,
]);
}


}


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

 

 

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

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