小编Jkl*_*leg的帖子

在扩展布局的视图中无法访问Laravel View Composer变量

我正在使用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)

php laravel laravel-4

12
推荐指数
1
解决办法
4498
查看次数

标签 统计

laravel ×1

laravel-4 ×1

php ×1