Laravel PHP:使用nest()时遇到问题

时间:2014-11-05 21:57:38

标签: php laravel-4

我试图使用' nest()'在Laravel PHP中通过2个视图,1)布局(layouts \ master.blade.php)和2)表单(forms \ new-video.php)。

然而,当我使用' nest()'功能,我所看到的是' master.blade.php'的输出。而不是来自' forms.new-video.blade.php'。

的表格

控制器:

class VideosController extends BaseController {

/**
 * The video model
 *
 * @var \Models\Video
 **/
protected $video;


//  Use this variable for the repository

protected $videoRepo;

protected $layout = 'layouts.master';

  public function create()
  {
    $data = array('type' => 'video');
    $this->layout->content = \View::make('forms.new-video', $data)
        ->nest('form', 'forms.new-video');
  }
}
编辑:这是我的' master.blade.php'布局(模板):

<!doctype html>
<html>
<head>
    <link href="//netdna.bootstrapcdn.com/bootstrap/3.1.0/css/bootstrap.min.css" rel="stylesheet">
    <link rel="stylesheet" href=" <?php echo asset('css/style.css')?>" type="text/css">
    <style type="text/css">
        form ul {list-style: none}
        .navbar {border-radius: 0px;}
    </style>
</head>

<body>
    <nav class="navbar navbar-inverse" role="navigation">
        <div class="container-fluid">
            <!-- Brand and toggle get grouped for better mobile display -->
            <div class="navbar-header">
              <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
              </button>
              <a class="navbar-brand" href="#">Pictures and Videos</a>
            </div>
            <div class="collapse navbar-collapse">
                <ul class="nav navbar-nav">
                    <li {{ (Request::is('pics_vids') ? 'class="active"' : '') }}>{{ link_to_route('overview', 'Home') }}</li>
                    <li {{ (Request::is('pics_vids') ? 'class="active"' : '') }}>{{ link_to_route('overview', 'Home') }}</li>
                    <li {{ (Request::is('pics_vids/new_video') ? 'class="active"' : '') }}>{{ link_to_route('new_video', 'New Video') }}</li>
                </ul>
            </div>
        </div>
    </nav>

/* Content is being called in my 'container' <div> */

    <div class="container">
        @if (Session::has('message'))
            <div class="flash alert">
                <p>{{ Session::get('message') }}</p>
            </div>
        @endif

/* Call up the content here  */

        @yield('content')
    </div>

    <script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
    <script src="//netdna.bootstrapcdn.com/bootstrap/3.1.0/js/bootstrap.min.js"></script>
</body>

我知道我没有使用&#39; nest()&#39;方法,因为Laravel对我来说还是新手。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:2)

您可以在Laravel中以两种主要方式使用布局:

<强> 1。控制器模板

在您的控制器中,您有:

$this->layout->content = \View::make('forms.new-video', $data);

master.blade.php中,您可以在此处放置内容:

{{ $content }} // When using controller templates you don't use @yield

new-video视图中,您可以获得所需的任何HTML。

<强> 2。模板继承

你的控制器不需要扩展BaseController就可以了。在您的操作中,您将返回视图而不是分配它,如下所示:

return \View::make('forms.new-video', $data);

在您master.blade.php @yield中使用@yield('content'); 您要包含内容的地方:

new-video

@extents视图中,您需要指定视图content您的主布局,并定义一个名为@extends('layouts.master') @section('content') // Your form html goes here @stop 的部分,该部分将包含在您的布局中:

$this->layout->content = \View::make('forms.new-video', $data);

在您的情况下,您可以在控制器中使用{{ $content }},在主布局中使用@yield而不是{{1}}。