Laravel学习总结二:基础内容(模板Blade和View)
Blade
laravel的特性拥有一个模板引擎
本人在写blade的时候按照以下逻辑来。其实直接写模板,不用继承于某个模板页面也是可行的,就像我的login.blade.php页面而言,该页面就不用继承。
首先,在layouts的文件夹下定义一个master.blade.php文件,该文件作为模板源,将其理解为母页面。
其他的都从他继承得到页面的css和js以及HTML的框架,将其理解为子页面。
子页面的第一句代码,必须是@extends('layouts.master');表示继承了哪个妈妈的style。
子页面中有一个语句块是
@section('content')
//·····
@stop
在妈妈页面中,也有语句是与上述语句块对应的为
@yield('content')
就相当于对象中的继承概念中的,将接口的方法进行实现;
开始笔者当成是对象的类的继承,父类与子类的关系,后来发现这样的类比并不好,说接口比较合适;
接口只是声明的方法名称,并没有定义方法体,实现在子类中完成,所以用对象中的接口来描述该模板的继承关系最为恰当。
PS:如果读者有更好的想法,可以留言,相互讨论学习。
继续说明:该@yield有点类似于占位符,继承该母页面的子页面可以动态改变@yield('content')位置的内容。
模板继承特殊点:
如果master页面也有名为content的section块时,当某个页面继承master.blade.php时,该section可选地显示出妈妈页面的内容也可以选择显示儿子页面的内容。
使用方法@parent,如果在儿子页面的section块中出现该方法,则说明该块的位置显示妈妈的内容;否则显示儿子的内容。
例:
@section('nav')
@parent
@stop
这里也可以类比对象中的继承概念,这里用的就是类的继承,子类可以将父类的方法重写,同样也可以选择使用父类的代码。
在blade中
{{$title}} 等效于<?php echo $title;?>
如果该变量的值是HTML的标签语句,则需要{!! $title !!}来实现HTMl代码功能的输出
Blade中的PHP代码块
以一个实例说明:
@extends('layouts.home')
{{-- 管理页面
controller传来三个变量
currentmodel
currentfields
result--}}
@section('title')
<title>{{$currentmodel}}</title>
@stop
@section('content')
{{HTML::linkRoute('admincreate', '新建', ['currentmodel'=>$currentmodel], '')}}
<table border='3'>
<tr>
@foreach ($currentfields as $description=>$field)
{{-- 循环输出表的字段 --}}
@if ($description==='用户密码')
<?php continue; ?>
@endif
<th>{{$description}}</th>
@endforeach
<th>Action1</th><th>Action2</th>
</tr>
<?php $id=0; ?>
@foreach ($result as $object)
{{-- result对象结果集,每个对象代表一行记录 --}}
<tr>
@foreach ($currentfields as $field)
{{-- 循环输出表的字段 --}}
@if ($field==='password')
<?php continue; ?>
@endif
<td>{{$object->$field}}</td>
@endforeach
<td>{{HTML::linkRoute('adminupdate', '编辑', ['updateObjectID'=>$object->id,'currentmodel'=>$currentmodel], '')}}</td>
<td>{{HTML::linkRoute('admindelete','删除' , ['deleteOjectID'=>$object->id,'currentmodel'=>$currentmodel],'')}}</td></tr>
@endforeach
</table>
{{$result->links()}}
@stop
细细体会其中的
@if @endif
@foreach @endforeach
{{HTML::linkRoute}}
{{Form::input}}
另外我还会话点时间将我之前在sublime上的关于laravel的插件安装过程写一个文档,帮助读者来使用laravel。
有了插件,可以加快写代码速度和肉眼的查看的舒适度。
返回一个View视图对象
return View::make('badmin.managem',compact('result','currentfields','currentmodel'));
该语句功能为:返回一个view->badmin目录下的managem.blade.php页面,并传递变量($result,$currentfields,$current)
在这里就涉及到了页面与后台逻辑处理的参数传递的代码实现了,我将在另一篇文章中详细讲解一下。