我正在尝试通过2个视图在Laravel PHP中使用'nest()',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>
我知道我没有正确使用'nest()'方法,因为Laravel对我来说仍然是新手。任何帮助表示赞赏!
您可以在Laravel中以2种主要方式使用布局:
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
在主布局中使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句