我试图使用' 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对我来说还是新手。任何帮助表示赞赏!
答案 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}}。