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 相关文章推荐
WINDOWS服务器安装多套PHP的另类解决方案
Oct 09 PHP
聊天室php&amp;mysql(六)
Oct 09 PHP
让你同时上传 1000 个文件 (二)
Oct 09 PHP
PHP获得用户使用的代理服务器ip即真实ip
Dec 31 PHP
php中配置文件操作 如config.php文件的读取修改等操作
Jul 07 PHP
php使用array_rand()函数从数组中随机选择一个或多个元素
Apr 28 PHP
Windows 下安装 swoole 图文教程(php)
Jun 05 PHP
PHP检测接口Traversable用法详解
Dec 29 PHP
PHP分享图片的生成方法
Apr 25 PHP
详解PHP发送邮件知识点
May 06 PHP
Laravel框架实现定时发布任务的方法
Aug 16 PHP
PHP实现小程序批量通知推送
Nov 27 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
解析phpstorm + xdebug 远程断点调试
2013/06/20 PHP
php发送html格式文本邮件的方法
2015/06/10 PHP
php设置页面超时时间解决方法
2015/09/22 PHP
php示例详解Constructor Prototype Pattern 原型模式
2015/10/15 PHP
CodeIgniter控制器之业务逻辑实例分析
2016/01/20 PHP
让whoops帮我们告别ThinkPHP6的异常页面
2020/03/02 PHP
Avengerls vs Newbee BO3 第一场2.18
2021/03/10 DOTA
JavaScript中使用构造函数实现继承的代码
2010/08/12 Javascript
document.documentElement的一些使用技巧
2013/04/18 Javascript
Javascript selection的兼容性写法介绍
2013/12/20 Javascript
JS实现仿百度输入框自动匹配功能的示例代码
2014/02/19 Javascript
用js判断输入是否为中文的函数
2014/03/10 Javascript
使用AngularJS实现可伸缩的页面切换的方法
2015/06/19 Javascript
使用RequireJS优化JavaScript引用代码的方法
2015/07/01 Javascript
Jquery 效果使用详解
2015/11/23 Javascript
JS onkeypress兼容性写法详解
2016/04/27 Javascript
jQuery查看选中对象HTML代码的方法
2016/06/17 Javascript
JQuery中解决重复动画的方法
2016/10/17 Javascript
self.attachevent is not a function的解决方法
2017/04/04 Javascript
使用JavaScript中的lodash编写双色球效果
2018/06/24 Javascript
Vue中key的作用示例代码详解
2020/06/10 Javascript
[39:32]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第二场
2014/05/23 DOTA
Python实现全局变量的两个解决方法
2014/07/03 Python
Python基于Opencv来快速实现人脸识别过程详解(完整版)
2019/07/11 Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
2019/09/18 Python
Python帮你微信头像任意添加装饰别再@微信官方了
2019/09/25 Python
PyTorch的自适应池化Adaptive Pooling实例
2020/01/03 Python
新西兰珠宝品牌:Michael Hill
2017/09/16 全球购物
Kivari官网:在线购买波西米亚服装
2018/10/29 全球购物
微软加拿大官方网站:Microsoft Canada
2019/04/28 全球购物
法院实习人员自我鉴定
2013/09/26 职场文书
2014年应届大学生毕业自我鉴定
2014/01/31 职场文书
项目合作意向书
2015/05/08 职场文书
感恩的心主题班会
2015/08/12 职场文书
如何书写民事调解协议书?
2019/06/25 职场文书
python数字转对应中文的方法总结
2021/08/02 Python