我可以protected $layout = 'layouts.mylayout';
用来定义 Laravel 在使用时应该使用哪个布局,$this->layout->content = View::make('myview');
但是如果我需要在同一个控制器中使用多个布局,我应该怎么做?
问问题
112 次
2 回答
1
这个解决方案怎么样?您可以覆盖layout
控制器方法中的属性,为其分配内容等...自动返回响应。
请注意,请确保您的控制器扩展BaseController
了包含setupLayout
方法。如果它没有扩展,setupLayout
请在控制器内部实现。
<?php
class UsersController extends BaseController
{
protected $layout = 'users.layout.main';
public function getList()
{
$this->layout->content = View::make('users.list');
}
public function getDetail()
{
$this->layout = View::make('users.layout.detail');
$this->layout->content = View::make('users.detail');
}
}
于 2013-10-27T11:32:37.230 回答
0
看起来您无法使用protected $layout
. 但是你有很多选择。
一种是将布局名称传递给您的视图:
class TestController extends BaseController {
public function index()
{
return View::make('myview', ['layout' => 'layouts.mylayout']);
}
public function show()
{
return View::make('myview', ['layout' => 'layouts.mySecondLayout']);
}
public function create()
{
/// this one will use your default layout
return View::make('myview');
}
}
你@extends
的布局在你的myview.blade.php
:
@extends( isset($layout) ? $layout : Config::get('app.layout') )
@section('content')
Here goes your content
@stop
你的布局应该是这样的
<html><body>
THIS IS YOUR LAYOUT 1
@yield('content')
</body></html>
此外,在您的 app/config/app.php 中,您必须配置默认布局:
return array(
'layout' => 'layouts.master',
...
);
于 2013-10-25T17:46:11.617 回答