Laravel 5框架学习之Blade 简介


Posted in PHP onApril 08, 2015

在多个页面中我们可能包含相同的内容,像是文件头,链接的css或者js等。我们可以利用布局文件完成这个功能。

让我们新建一个布局文件,例如 views/layout.blade.php

<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.4/css/bootstrap.min.css">
</head>
<body>
  <div class="container">
    @yield('content')
  </div>
</body>
</html>

我们创建了不解的结构,引入了bootstrap,注意 @yield 是blade的布局占位符,未来我们的页面内容将填充到这里,修改 about.blade.php

@extends('layout')

@section('content')
  
<h1>About {{ $first }} {{ $last }}</h1>

@stop

上面的代码表示我们使用布局文件 layout.blade.php, 然后在 content 段中添加内容。

在 routes.php 中添加:

Route::get('about', 'PagesController@about');
Route::get('contact', 'PagesController@contact');

在 PagesController.php 中添加:

public function contact() {
    return view('pages.contact');
  }

新建视图 pages/contact.blade.php

@extends('layout')

@section('content')
  <h1>Contact Me!</h1>
@stop

Check it out!

在布局文件中我们可以添加多个 @yield , 比如在 layout.blade.php 中添加 @yield('footer') :

<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.4/css/bootstrap.min.css">
</head>
<body>
  <div class="container">
    @yield('content')
  </div>

  @yield('footer')
</body>
</html>

比如 contact.blade.php 中有一段脚本,就可以放在这个段中。

@extends('layout')

@section('content')
  <h1>Contact Me!</h1>
@stop

@section('footer')
  <script>
    alert('Contact from scritp')
  </script>
@stop

访问contact会有对话框,而about仍然是普通显示

使用 @if 进行判断

@extends('layout')

@section('content')
  @if ($first = 'Zhang')
    <h1>Hello, Zhang</h1>
  @else
    <h1>Hello, nobody</h1>
  @endif
@stop

也可以视同 @unless 等同于 if !, 还有 @foreach 等。

public function about()
  {
    $people = [
      'zhang san',
      'li si',
      'wang wu'
    ];
    return view('pages.about', compact('people'));
  }
@extends('layout')

@section('content')
  <h1>Person:</h1>
  <ul>
    @foreach($people as $person)
      <li>{{ $person }}</li>
    @endforeach
  </ul>
@stop

有一种情况,数据可能来自数据库,集合可能是空,像是这样:

$people = [];

处理这种情况,请添加 @if 处理

@extends('layout')

@section('content')
  @if (count($people))
    <h1>Person:</h1>
    <ul>
      @foreach($people as $person)
        <li>{{ $person }}</li>
      @endforeach
    </ul>
  @endif

  <h2>Other info</h2>
@stop

That's better.

以上所述就是本文的全部内容了,希望能够对大家学习Laravel5有所帮助。

PHP 相关文章推荐
用php或asp创建网页桌面快捷方式的代码
Mar 23 PHP
php购物车实现代码
Oct 10 PHP
php中计算程序运行时间的类代码
Nov 03 PHP
解析PHP 使用curl提交json格式数据
Jun 29 PHP
php中的路径问题与set_include_path使用介绍
Feb 11 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
Oct 13 PHP
ThinkPHP3.2.2实现持久登录(记住我)功能的方法
May 16 PHP
php+redis实现商城秒杀功能
Nov 19 PHP
PHP长连接实现与使用方法详解
Feb 11 PHP
php 广告点击统计代码(php+mysql)
Feb 21 PHP
PHP中localeconv()函数的用法
Mar 26 PHP
Yii 实现数据加密和解密
Mar 09 PHP
Laravel 5框架学习之向视图传送数据(进阶篇)
Apr 08 #PHP
Laravel 5框架学习之向视图传送数据
Apr 08 #PHP
Laravel 5框架学习之路由、控制器和视图简介
Apr 07 #PHP
Laravel 5框架学习之Laravel入门和新建项目
Apr 07 #PHP
php生成圆角图片的方法
Apr 07 #PHP
php按单词截取字符串的方法
Apr 07 #PHP
php生成zip文件类实例
Apr 07 #PHP
You might like
用PHP中的 == 运算符进行字符串比较
2006/11/26 PHP
php cli 小技巧
2013/06/03 PHP
PHP实现多关键字加亮功能
2016/10/21 PHP
Laravel5.* 打印出执行的sql语句的方法
2017/07/24 PHP
js禁止小键盘输入数字功能代码
2011/08/01 Javascript
使用js实现雪花飘落效果
2013/08/26 Javascript
jquery插件开发之实现md5插件
2014/03/17 Javascript
微信小程序  自定义创建详细介绍
2016/10/27 Javascript
基于JS实现二维码图片固定在右下角某处并跟随滚动条滚动
2017/02/08 Javascript
VueJs使用Amaze ui调整列表和内容页面
2017/11/30 Javascript
代码实例ajax实现点击加载更多数据图片
2018/10/12 Javascript
jQuery操作attr、prop、val()/text()/html()、class属性
2019/05/23 jQuery
微信小程序按顺序同步执行的两种方式
2019/12/20 Javascript
JS寄快递地址智能解析的实现代码
2020/07/16 Javascript
[00:10]DOTA2全国高校联赛 以DOTA2会友
2018/05/30 DOTA
python网络编程学习笔记(四):域名系统
2014/06/09 Python
跟老齐学Python之集合的关系
2014/09/24 Python
Flask入门教程实例:搭建一个静态博客
2015/03/27 Python
Python多线程threading和multiprocessing模块实例解析
2018/01/29 Python
浅谈python正则的常用方法 覆盖范围70%以上
2018/03/14 Python
浅谈python下tiff图像的读取和保存方法
2018/12/04 Python
解决python3 requests headers参数不能有中文的问题
2019/08/21 Python
python加载自定义词典实例
2019/12/06 Python
如何使用python传入不确定个数参数
2020/02/18 Python
python上传时包含boundary时的解决方法
2020/04/08 Python
解决tensorflow 释放图,删除变量问题
2020/06/23 Python
解决Keras TensorFlow 混编中 trainable=False设置无效问题
2020/06/28 Python
英国IT硬件供应商,定制游戏PC:Mesh Computers
2019/03/28 全球购物
Java面试题及答案
2012/09/08 面试题
2019年Java面试必问之经典试题
2012/09/12 面试题
物流专业大学生求职信范文
2013/10/28 职场文书
《金钱的魔力》教学反思
2014/02/24 职场文书
母婴店促销方案
2014/03/05 职场文书
预备党员2014年第四季度思想汇报范文
2014/10/25 职场文书
大明湖导游词
2015/02/03 职场文书
python和anaconda的区别
2022/05/06 Python