我正在使用Laravel视图编辑器与所有视图共享几个变量.
app/composers.php:
View::composer('layouts.base', 'MyApp\Composers\BaseComposer');
Run Code Online (Sandbox Code Playgroud)
我的理解是,任何使用的东西layouts.base都会获得视图作曲家数据.
BaseComposer@compose,简化:
public function compose($view) {
// Some logic left out here that pulls in some data
$data = array(
'name' => 'John',
'status' => 'active'
);
$data = (object) $data;
return $view->with('global', $data);
}
Run Code Online (Sandbox Code Playgroud)
鉴于此layouts.base:
{{ $global->name }}
@include('layouts.partials.header')
@yield('content')
Run Code Online (Sandbox Code Playgroud)
$global->name被发现,所以包括在内layouts.partials.header:
{{ $global->status }}
Run Code Online (Sandbox Code Playgroud)
但是,扩展的视图会layouts.base引发Undefined variable: global错误:
home.blade.php
@extends('layouts.base')
@section('content')
{{ $global->name }}
@stop
Run Code Online (Sandbox Code Playgroud)
如果我修改composers.php引用,一切正常home:
View::composer(['layouts.base', 'home'], 'MyApp\Composers\BaseComposer'); …Run Code Online (Sandbox Code Playgroud)