Laravel学习总结二:基础内容(模板Blade和View)

来源:互联网 发布:java时间轴处理 编辑:程序博客网 时间:2024/05/16 14:37

Laravel学习总结二:基础内容(模板Blade和View)

2015/01/04 更新,随着修改而更新

该部分为Laravel中的重要部分MVC中的View部分,Blade中有很多内容

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)

在这里就涉及到了页面与后台逻辑处理的参数传递的代码实现了,我将在另一篇文章中详细讲解一下。




0 0
原创粉丝点击