1

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

这里 $categories 在主布局中不可用:

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

“测试”没有出现!

4

4 回答 4

5

我认为你可以使用这个:

$this->layout->with('catalog.categories', $data);
于 2013-05-03T13:35:46.097 回答
2

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

你也可以试试这个:

View::make('catalog.categories')->with('categories', $categories);
于 2013-01-24T15:54:51.663 回答
0

我没有那么多地使用 laravel,但我认为在 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')
于 2013-01-24T14:28:18.597 回答
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);
}
于 2015-01-13T02:33:58.243 回答