Php 如何在Laravel中设置布局?
我正在尝试创建布局。我的基本控制器如下所示:Php 如何在Laravel中设置布局?,php,laravel,controller,laravel-4,Php,Laravel,Controller,Laravel 4,我正在尝试创建布局。我的基本控制器如下所示: class BaseController extends Controller { protected $layout = 'layouts.default'; } namespace Site; use View; class UserController extends \BaseController { public function index() { $this->layout-
class BaseController extends Controller {
protected $layout = 'layouts.default';
}
namespace Site;
use View;
class UserController extends \BaseController {
public function index()
{
$this->layout->content = View::make('site/user/index');
// return View::make('site/user/index');
}
}
然后我通过用户控制器对其进行扩展,如下所示:
class BaseController extends Controller {
protected $layout = 'layouts.default';
}
namespace Site;
use View;
class UserController extends \BaseController {
public function index()
{
$this->layout->content = View::make('site/user/index');
// return View::make('site/user/index');
}
}
但最终我得到了以下错误尝试分配非对象的属性var_dump
显示$this->layout
是字符串,而不是对象
基本上我只想做returnview::make('site/user/index')代码>这是我喜欢的布局方式
首先-我不设置protected$layout='layouts.default'代码>在控制器中-我只是将其忽略
第二,我设置了如下模板:
class BaseController extends Controller {
protected $layout = 'layouts.default';
}
namespace Site;
use View;
class UserController extends \BaseController {
public function index()
{
$this->layout->content = View::make('site/user/index');
// return View::make('site/user/index');
}
}
app/views/layouts/master.blade.php
<h1>This is my master template</h1>
@yield('content')
<h5>This is my footer</h5>
@extends('layouts.master')
@section('content')
This is the user section
@stop
这样,布局模板是在视图中定义的,而不是在控制器中定义的,这是我认为它应该在的位置(控制器不应该知道/关心视图使用的模板)。我更喜欢这样做布局
首先-我不设置protected$layout='layouts.default'代码>在控制器中-我只是将其忽略
第二,我设置了如下模板:
class BaseController extends Controller {
protected $layout = 'layouts.default';
}
namespace Site;
use View;
class UserController extends \BaseController {
public function index()
{
$this->layout->content = View::make('site/user/index');
// return View::make('site/user/index');
}
}
app/views/layouts/master.blade.php
<h1>This is my master template</h1>
@yield('content')
<h5>This is my footer</h5>
@extends('layouts.master')
@section('content')
This is the user section
@stop
这样,布局模板是在视图中定义的,而不是在控制器中定义的,这是我认为它应该在的位置(控制器不应该知道/关心您的视图使用的模板)。假设您的所有刀片都正常,并且您坚持使用控制器布局,因为Laravel允许它作为一个选项,将此代码段添加到BaseController
以修复以下问题:
protected function setupLayout()
{
if ( ! is_null($this->layout))
{
$this->layout = View::make($this->layout);
}
}
假设您的所有刀片服务器都正常,并且您坚持使用控制器布局,因为Laravel允许将其作为一个选项,请将此代码段添加到BaseController
,以解决此问题:
protected function setupLayout()
{
if ( ! is_null($this->layout))
{
$this->layout = View::make($this->layout);
}
}
如果您使用的是Laravel5,您可以这样做(我不确定这是否是最好的方法)
那么在你看来,你可以做到这一点
<?php echo $content; ?>
当然,如果您不使用blade。如果您使用的是Laravel 5,您可以这样做(我不确定这是否是最好的方法)
那么在你看来,你可以做到这一点
<?php echo $content; ?>
当然,如果您没有使用blade。是否存在/views/site/user/index.blade.php?@theshift exchange yap,return View::make('site/user/index')
生成html,但没有布局。是否存在/views/layouts/default.blade.php?我相信当您使用$this->layout->content
时,它将在layouts.default
模板中设置content
部分。您在布局/default.blade.php
中是否有@yield('content')
项?@user3158900 yap,就在那里。是否存在/views/site/user/index.blade.php?@TheShiftExchange yap,return View::make('site/user/index')
生成html,但没有布局。是否存在/views/layouts/default.blade.php?我相信当您使用$this->layout->content
时,它将在layouts.default
模板中设置content
部分。在layouts/default.blade.php
中是否有@yield('content')
项?@user3158900是的,它在那里。是的,这是真的,但我想知道为什么这个示例不起作用?是的-不确定-也许其他人可以帮助。看起来workblade布局应该更简单。是的,这是真的,但我想知道为什么这个示例不起作用?是的-不确定-也许其他人可以帮助。看起来工作刀片布局应该更简单。您的解决方案“方便”,但无法处理laravel 4中的干式原理(在控制器中仅设置一次正确的布局)。您的解决方案“方便”,但无法处理laravel 4中的干式原理(在控制器中仅设置一次正确的布局)。