如何在Laravel 4中将变量发送到主布局?

时间:2013-01-24 14:14:31

标签: laravel laravel-4

如何在Laravel 4中将变量发送到主布局?

此处$ layout在主布局中不可用:

protected $layout = 'layouts.master';

public function index()
{
    $categories = Category::all();
    $data = array('categories' => $categories);
    $this->layout->content = View::make('catalog.categories', $data);
}

我的主要观点:

@yield('content')

@if($categories)
   <h1>TEST</h1>
@endif

“TEST”没有出现!

4 个答案:

答案 0 :(得分:5)

我认为你可以使用它:

$this->layout->with('catalog.categories', $data);

答案 1 :(得分:2)

您确定$ categories包含任何数据吗?

你也可以试试这个:

View::make('catalog.categories')->with('categories', $categories);

答案 2 :(得分:0)

我没有那么多拉拉维尔,但我认为在4:

View::make('catalog.categories', $data); // this looks correct

child模板中,您应该扩展主布局:

@extends('layout/master')

// define what will be send to the master:
@section('cats')
    {{ $categories }}
@stop

然后在你的主人:

@yield('cats')

答案 3 :(得分:0)

我也遇到了这个问题。从Laravel 4.2开始,以下是我的工作方式:

将数据传递到布局:

$this->layout->content = View::share('data', $data);

在你的情况下,这是如何:

protected $layout = 'layouts.master';

public function index()
{
    $categories = Category::all();
    $data = array('categories' => $categories);
    $this->layout->content = View::share('data', $data);
    $this->layout->content = View::make('catalog.categories', $data);
}