App::make controller方法导致nginx中出现502错误



这是我的大师.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')在另一个视图中包含一个视图,但对于设置布局,最好使用上述两种方法中的任何一种。

最新更新