这是我的大师.blade.php(url:admin):
@section('admin_body')
{{ App::make('PageController')->index() }}
@show
这是我的index.blade.php:
@extends('master')
@section('admin_body')
<p>Hello!</p>
@stop
如果我访问URL:admin-我得到502坏网关错误。当我删除index.blade.php的控件时,它确实有效。
这不是在布局中包含视图的正确方式。Laravel模板文档举例说明了实现这一点的两种方法。
控制器布局
可以通过继承BaseController
并设置layout
属性来使用控制器布局。在你的情况下,控制器看起来像这样:
class PageController extends BaseController {
protected $layout = 'master';
public function index()
{
$this->layout->content = View::make('index');
}
}
并将其放置在您的master.blade.php
中,以便输出视图:
{{ $content }}
刀刃模板
刀片模板使用自己的内部继承系统。您使用分区和扩展是正确的,但以下是如何正确使用它。对于您的控制器,无需扩展BaseController
并定义布局,只需返回@extends
(布局)的视图。这样的东西:
class PageController {
public function index()
{
return View::make('index');
}
}
您的视图文件index.blade.php
需要@extends
作为布局文件(您所做的是可以的,只是您不需要第二个@stop
指令,因为@extends
不是关闭的@stop
):
@extends('master')
@section('admin_body')
<p>Hello!</p>
@stop
布局文件master.blade.php
需要有@yield
指令,以便在其中包含视图部分:
@yield('admin_body')
使用@include
附带说明一下,您也可以使用@include('view_name')
在另一个视图中包含一个视图,但对于设置布局,最好使用上述两种方法中的任何一种。