4.关于laravel框架中Blade模板引擎

官方文档简介

Blade 是 Laravel 提供的一个既简单又强大的模板引擎。和其他流行的 PHP 模板引擎不一样,Blade 并不限制你在视图中使用原生 PHP 代码。所有 Blade 视图文件都将被编译成原生的 PHP 代码并缓存起来,除非它被修改,否则不会重新编译,这就意味着 Blade 基本上不会给你的应用增加任何额外负担。Blade 视图文件使用 .blade.php 扩展名,一般被存放在resources/views 目录。

1.模板继承:section、yield、extends、parent

实例:1.创建一个视图模板:

<html>
<head>
    <title>Testtitle>
    <style>
        .header{
            width : 1000px;
            height: 150px;
            margin: 0 auto;
            background: #f5f5f5;
            border: 1px solid #dddddd;
        }
        .main{
            width : 1000px;
            height: 300px;
            margin: 0 auto;
            margin-top: 15px;
            clear: both;
        }
        .main .sidebar{
            float: left;
            width: 20%;
            height: inherit;
            background: #f5f5f5;
            border: 1px solid #dddddd;
        }
        .main .content{
            float: right;
            width: 75%;
            height: inherit;
            background: #f5f5f5;
            border: 1px solid #dddddd;
        }
        .footer{
            width: 1000px;
            height: 150px;
            margin: 0 auto;
            margin-top: 15px;
            background: #f5f5f5;
            border: 1px solid #dddddd;
        }
    style>
head>
<body>
<div class = "header">
    @section('header')
    This is Headers
    @show
div>
<div class="main">
    <div class="sidebar">
        @section('sidebar')
        This is sidebar
        @show
    div>
    <div class="content">
        @yield('content','This is content')
    div>
div>
<div class="footer">
    @section('footer')
    This is footer
    @show
div>

body>
html>
其中,@section 和 @yield的区别在于
@section既可以单独显示父模板的默认内容,也可以单独显示子模板的新内容,通过@parent还可以同时显示父子模板中的内容
@yield只能显示其中一个,子模板不定义,就用父模板默认的,子模板定义,父模板的内容会被覆盖,通过@parent也不能显示。

在子模板中调用视图模板
@extends('Test')
@section('header')
    @parent  //@parent,直接调用模板视图
    头部      //重新定义模板视图
@stop

@section('sidebar')
    侧边框
@stop

@section('content')
    在模板视图定义为yield,所以@parent不会输出原视图,只有在没重定义视图的情况下显示默认视图
    主要内容
@stop

@section('footer')
    @parent
    页脚
@stop

模板中输出php变量
 
  
//模板中输出php变量
 
  
@section('content')
  <p>{{$name}}p>

  //模板中输出PHP代码
  <p>{{time()}}p>
  <p>{{date('Y-m-d h:i:s',time())}}p>
{{--  

{{var_dump($arr)}}

--}}
//inarray <p>{{ in_array($name,$arr)? 'ture':'false' }}p> //isset和or功能相似,都是判断变量是否存在 <p>{{ isset($name)? $name :'default' }}p> <p>{{ $name or 'test' }}p> //原样输出,在前面加@ <p>@{{$name}}p> <p>模板中的注释:p>{{--在浏览器中是不会显示的--}} //引入子视图 @include('test.play',['massige'=>'测试'])
子视图实例:
<p>This is a page {{$massige}}p>
 
  
@stop
 
  
模板中的流程控制:if、unless、for、foreach
unless相当于if取反,例:if($name=='zhoupeng_L')==unless($name!='zhoupeng_L')
基本语法:
@if($name == 'zhoupeng_L')
    I'm zhoupeng_L
@elseif($name == 'shuting_H')
    I'm shuting_H
@else
    who am i?
@endif
 
  
语法均为@+语法开头,@end+语法结尾
 
  
foreach还有一个变形forelse,判断
@forelse($students as $student)
   

{{$student->name}}

@empty
   

null

@endforelse
 
  
 
  
 
  
模板中的URL:url()、action()、route()
<br>
<a href="{{url('urltest')}}">url引用url名方法 a>
<br>
<a href="{{action('StudentController@urltest')}}">action引用控制器+方法 方法a>
<br>
<a href="{{route('url')}}">route引用别名a>
路由设置为:
Route::any('/urltest',['as'=>'url','uses'=>'StudentController@urltest']);
 
  



你可能感兴趣的:(laravel学习笔记)