Laravel学习总结二:基础内容(模板Blade和View)
来源:互联网 发布:java时间轴处理 编辑:程序博客网 时间:2024/05/16 14:37
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)
在这里就涉及到了页面与后台逻辑处理的参数传递的代码实现了,我将在另一篇文章中详细讲解一下。
- Laravel学习总结二:基础内容(模板Blade和View)
- Laravel基础篇学习笔记(三):Blade模板引擎
- Laravel 学习总结二:基础内容(Route)
- Laravel学习总结二:基础内容(Controller)
- laravel(六)-Blade模板
- laravel学习笔记(5)— Blade模板引擎
- Laravel基础-Blade模板引擎流程控制
- laravel(3) blade模板和布局
- Laravel入门教程(六)- Blade模板引擎
- Laravel blade 模板积累
- Laravel blade 模板积累
- Laravel-Blade模板引擎
- Laravel Blade模板引擎
- laravel blade模板
- Laravel学习:视图变量传递和Blade
- Laravel基础-blade模板引擎之变量操作
- laravel Blade 模板引擎 命令
- laravel的blade模板笔记
- Powershell 管理域之搜索OU并移动
- C# VS VB
- shell脚本编程<先导>:环境变量
- 关系型数据库管理系统简介
- java.util.Comparator接口小结
- Laravel学习总结二:基础内容(模板Blade和View)
- java.lang.Long源码
- iOS开发 动画Animation的简单使用
- poj 1182 食物链 - 并查集
- Arrays.asList() 返回的list不能add,remove以及慎用java.util.Collections.copy()方法
- JSON
- Android Studio如何使用aidl
- Mode
- 从头认识java-15.7 Map(7)-TreeMap与LinkedHashMap