如何在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”没有出现!
答案 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);
}