Pat*_*iel 0 php laravel laravel-3
我将按照一些关于Laravel 3的教程,知道,我有一个问题,一个:
@section('post_navigation')
@if(Auth::check())
@include('plugins.loggedin_postnav')
@endif
@endsection
Run Code Online (Sandbox Code Playgroud)
为什么这部分没有出现?
我尝试删除部分中的所有内容,例如;
@section('post_navigation')
<h1>Test</h1>
@endsection
Run Code Online (Sandbox Code Playgroud)
但是不起作用.
完整的代码是:
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
{{ HTML::link('/', 'Instapics', array('class' => 'brand')); }}
<div class="nav-collapse">
<ul class="nav">
@section('navigation')
<li class="active">{{ HTML::link('/', 'Home') }}</li>
@yield_section
</ul>
</div>
@section('post_navigation')
@if(Auth::check())
@include('plugins.loggedin_postnav')
@endif
@endsection
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
[编辑]
我将@endsection更改为@yield_section,然后工作,但是,我仍然不明白,例如(在User_Controller索引视图中):
@section('post_navigation')
@parent
@endsection
Run Code Online (Sandbox Code Playgroud)
为什么不出现包含?
为什么我需要将endsection更改为yield_section?
使用@section时,您可以定义一个类似于定义变量的部分.然后,您可以根据需要使用它@yield('sectionname')(或使用我在第二段中指定的其他方式).例如,你可以看看这个:
@section('scripts')
<script src="jquery.js"></script>
@endsection
<head>
@yield('scripts')
</head>
Run Code Online (Sandbox Code Playgroud)
@section/@endsection和@section/@yield_section不一样.@section/@yield_section定义了一个区域,而不是一个区域.换句话说,它调用一个变量.实际上它与yield('sectionname')比@section/@endsection更相似.它具有默认值作为与收益率的主要差异.
您可以定义具有默认值的区域,然后可以通过定义部分来更改它.这个逻辑主要用于创建和使用布局.例如,让下面的页面成为我们的主要(main.blade.php)布局.
<html>
<head>
<title>
@section('title')
Default Title Maybe Sitename.com
@yield_section
</title>
@include('scripts')
</head>
<body>
<div id="content">
@section('content')
Default content
@yield_section
</div>
<div id="sidebar">
@section('sidebar')
<ul id="menu">
<li><a href="#">Menu item 1</a></li>
<li><a href="#">Menu item 2</a></li>
<li><a href="#">Menu item 3</a></li>
<li><a href="#">Menu item 4</a></li>
</ul>
@yield_section
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
通常不直接使用布局.创建另一个页面并在页面中指定其布局@layout('main').然后,定义部分并且laravel模板系统更改定义的部分.让这个页面成为我们的帖子(post.blade.php)页面:
@layout('main')
@section('title')
$post->title - @parent
@end_section
@section('content')
$post->content
@end_section
Run Code Online (Sandbox Code Playgroud)
当我们返回post视图时View::make('profile');,如您所见,布局逻辑将起作用,main.blade.php中的部分将根据我们在此页面中定义的内容进行更改.所以,输出将是:
<html>
<head>
<title>
Post title - Default Title Maybe Sitename.com
</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
</head>
<body>
<div id="content">
Post content
</div>
<div id="sidebar">
<ul id="menu">
<li><a href="#">Menu item 1</a></li>
<li><a href="#">Menu item 2</a></li>
<li><a href="#">Menu item 3</a></li>
<li><a href="#">Menu item 4</a></li>
</ul>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
顺便说一句,@parent返回部分区域中的默认值和@includephp中包含的逻辑相同.
祝你今天愉快.
| 归档时间: |
|
| 查看次数: |
4819 次 |
| 最近记录: |