【实例】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数据了