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

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值