Laravel基础篇学习笔记(三):Blade模板引擎

1)Blade模板引擎简介及模板继承的使用

定义一个父模板: laravel/resources/views/layouts.blade.php

yield:展示某个指定section的内容;在声明中只定义了一个视图片段,没有任何内容,不可扩展;
section:定义一个视图片段;既可以在页面布局中定义一个视图片段,也可以有内容,还可以被子模板扩展;
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>轻松学会Laravel - @yield('title')</title>
    <style>
        .header {width: 1000px; height: 150px; margin: 0 auto; background: #f5f5f5; border: 1px solid #ddd;}
        .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 #ddd;}
        .main .content {float:right; width:75%; height:inherit; background: #f5f5f5; border:1px solid #ddd;}
        .footer {width:1000px; height:150px; margin:0 auto; margin-top: 15px; background: #f5f5f5; border:1px solid #ddd;}
    </style>
</head>
<body>
    <div class="header">
        @section('header')
        头部
        @show
    </div>
    <div class="main">
        <div class="sidebar">
            @section('sidebar')
            侧边栏
            @show
        </div>
        <div class="content">
            @yield('content', '主要内容')
        </div>
    </div>
    <div class="footer">
        @section('footer')
        底部
        @show
    </div>
</body>
</html>

控制器路径: laravel/app/Http/Controllers/StudentController.php

return view('student.section1');

新建模板路径: laravel/resources/views/student/section1.blade.php

@extends('layouts')     <!-- 继承第一个定义的视图。如果需要继承的模板不是设置在view目录下,有文件夹存在,则可以:@extends('文件夹名.模板名') -->

@section('header')
    @parent             <!-- 父模板的内容也输出 -->
    header
@stop

@section('sidebar')
    header
@stop

@section('content')     <!-- 虽然父模板设置成 yield,但是仍用 @section() 控制 -->
    content
@stop

2)基础语法及include的使用

控制器路径:laravel/app/Http/Controllers/StudentController.php

$name = 'sean';
$arr = ['sean', 'imooc'];

// return view('student/section1');   用斜线也行
return view('student.section1', [
    'name' => $name,
    'arr' => $arr,
]);

模板路径:laravel/resources/views/student/section1.blade.php

@section('content')
    content

    <!-- 1. 模板中输出PHP变量 -->
    <p>{{$name}}</p>

    <!-- 2. 模板中调用PHP代码 -->
    <p>{{ time() }}</p>
    <p>{{ date('Y-m-d H:i:s', time())}}</p>

    <p>{{ in_array($name, $arr) }}</p>
    <p>{{ var_dump($arr) }}</p>

    <p>{{ isset($name) ? $name : 'default' }}</p>

    <!-- <p>
        <?php echo isset($name) ? $name : 'default' ?>
    </p> -->

    <p>{{ $name1 or 'default' }}</p>

    <!-- 3. 原样输出 -->
    <p>@{{ $name }}</p>

    {{-- 4. 模板中的注释 --}}

    {{-- 5. 引入子视图 include --}}
    @include('student.common1', ['message' => '我是错误信息'])

@stop

引入子视图模板路径:laravel/resources/views/student/common1.blade.php

<p>我是include {{ $message }}</p>

3)流程控制

模板路径:laravel/resources/views/student/section1.blade.php

<!-- if 流程控制 -->
@if ($name == 'sean')
    I'm sean
@elseif ($name == 'imooc')
    I'm imooc
@else
    Who am I?
@endif


<!-- 可在流程控制里直接使用PHP函数 -->
@if (in_array($name, $arr))
    true
@else
    false
@endif


<!-- if 的取反 -->
@unless( $name != 'sean')
    I'm sean
@endunless


<!-- for 流程控制 -->
<!-- @for ($i=0; $i < 10; $i++)
    <p>{{ $i }}</p>
@endfor -->


<!-- foreach 流程控制 -->
@foreach($students as $student)
    <p>{{ $student->name }}</p>
@endforeach


<!-- forelse,foreach变种,有数据则输出,没数据则empty -->
@forelse($students as $stu)
    <p>{{ $stu->name }}</p>
@empty
    <p>null</p>
@endforelse

4) 模板中URL

加上一条路由,路由名称为 urlTest,路由别名为 url,路由指向 StudentController@urlTest

Route::any('urlTest', ['as' => 'url', 'uses' => 'StudentController@urlTest']);

控制器路径:laravel/app/Http/Controllers/StudentController.php

public function section1()
{
    return view('student.section1');
}

public function urlTest()
{
    return 'urlTest';
}

模板路径:laravel/resources/views/student/section1.blade.php

以下超链接都会链接到:http://192.168.2.110/laravel/public/urlTest
<!-- url() 通过路由的名称生成url -->
<a href="{{ url('urlTest') }}">url()</a>

<!-- action() 通过指定控制器和方法名生成url -->
<a href="{{ action('StudentController@urlTest') }}">action()</a>

<!-- route() 通过路由的别名生成url -->
<a href="{{ route('url') }}">route()</a>

模板路径:laravel/resources/views/student/common1.blade.php

<p>我是include {{ $message }}</p>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值