Laravel 如何在同一控制器内使用多个布局?
我想问,如何在Laravel中为同一控制器定义多个布局。 这里的场景如下所示: 我有一个主控制器,在这个控制器中有两个动作,一个叫做步骤,另一个叫做登录 我希望他们两个加载不同的布局 我使用的方法如下:Laravel 如何在同一控制器内使用多个布局?,laravel,laravel-4,Laravel,Laravel 4,我想问,如何在Laravel中为同一控制器定义多个布局。 这里的场景如下所示: 我有一个主控制器,在这个控制器中有两个动作,一个叫做步骤,另一个叫做登录 我希望他们两个加载不同的布局 我使用的方法如下: protected$layout=“layouts.page”; 公共职能指数() { //进入网站制作步骤页面 $this->layout->content=View::make('steps'); } 我可以定义多个布局吗?可能传递一个数组,如下所示: protected$layout=a
protected$layout=“layouts.page”;
公共职能指数()
{
//进入网站制作步骤页面
$this->layout->content=View::make('steps');
}
我可以定义多个布局吗?可能传递一个数组,如下所示:
protected$layout=array('first'=>“layouts.page”、'second'=>“layouts.second”);
使用或查看将子视图传递到下视图的部分
还可以为在中定义的布局指定多个截面
编辑:
如果要为来自同一控制器的不同视图定义主布局,请在视图上定义布局。看看这一节
@extends
用于定义视图本身的布局
希望这对您所寻找的内容有所帮助。最佳解决方案是创建一种生成视图的方法,嵌套多重布局:
return View::make('layouts.master', array())
->nest('section_one', YOUR_SECOND_MASTER, array())
->nest...
停止使用布局设置受保护的$layout。这不是常见做法,我还没有测试过,但值得一试 在控制器的方法中:
$this->layout = View::make('layouts.master1");
如果查看控制器可能扩展的,您将看到布局变量最终只是作为任何旧视图的结果使用
换句话说,您的$layout
变量只是一个视图。您可以在控制器中创建任何$layout
变量:
<?php
class MyController extends BaseController {
protected $layout;
protected $layout_alt;
// Here we're over-riding setupLayout() from
// the BaseController
protected function setupLayout()
{
if ( ! is_null($this->layout))
{
$this->layout = View::make($this->layout);
}
if ( ! is_null($this->layout_alt))
{
$this->layout_alt = View::make($this->layout_alt);
}
}
}
当然,正如Abishek R Srikanth指出的那样,可能性是无穷的。你也可以用Blade做一些奇特的事情:D我这样做的方式与@fideloper的答案非常相似
protected $layout;
private $_layout = null;
public function __construct()
{
}
private function _setupLayout()
{
if ( ! is_null($this->_layout))
{
$this->layout = View::make($this->_layout);
}
}
public function home() {
$this->_layout = 'layouts.1col_public';
$this->_setUpLayout();
$this->layout->content = View::make('static/home');
}
public function about() {
$this->_layout = 'layouts.2col_public';
$this->_setUpLayout();
$this->layout->active_menu = 'about';
$this->layout->content = View::make('static/default');
}
我就是这样做到的
$this->layout = View::make('layout.master');
$this->layout->content = View::make('step.demo')
你能详细说明你所说的多重布局是什么意思吗?从上面的问题来看,你似乎想要多重主布局。是吗?是的,我想要多个主布局在什么情况下,一个视图需要多个布局?我想要为名为
步骤的主控制器执行一个操作,该主控制器具有一个布局和另一个布局,用户可以登录到同一主控制器,这是一种好的做法吗?您可以使用@extends
直接在视图上执行此操作。为什么要在控制器上定义它。在控制器上定义布局不是一个好的做法。保持视图仅对其数据依赖于控制器是一种更好的做法。
$this->layout = View::make('layout.master');
$this->layout->content = View::make('step.demo')