这是我的master.blade.php(网址:管理员):
@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 的contsnts时 - 它确实有效。
答案 0 :(得分:0)
这不是在布局中包含视图的正确方法。 Laravel Templates Docs举例说明了实现这一目标的两种方法。
您可以通过继承BaseController
并设置layout
属性来使用控制器布局。在您的情况下,控制器看起来像这样:
class PageController extends BaseController {
protected $layout = 'master';
public function index()
{
$this->layout->content = View::make('index');
}
}
并将其放在要输出视图的master.blade.php
中:
{{ $content }}
Blade templating使用它自己的内部继承系统。通过使用部分和扩展,你在正确的轨道上,但这里是如何正确使用它。对于您的控制器,不需要扩展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')
在另一个视图中包含视图,但最好使用上述两种方法中的任意一种来设置布局。