larval模板引擎
父模板:layouts.blade.php:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<div id="header">
@section('header')
header
@show
</div>
<div id="main">
<div id="sidebar">
@section('sidebar')
sidebar
@show
</div>
<div id="content">
@yield('content','默认值')
@show
</div>
</div>
<div id="footer">
@section('footer')
footer
@show
</div>
</body>
</html>
子模版view/student/index.blade.php:
@extends('layouts') {{--模板继承--}}
@section('header')
@parent {{--显示父模板header内容--}}
重写header
@stop
@section('content')
重写content
@stop
基础语法:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<div id="header">
@section('header')
header
@show
</div>
<div id="main">
<div id="sidebar">
@section('sidebar')
sidebar
@show
</div>
<div id="content">
@yield('content','默认值')
@show
</div>
</div>
<div id="footer">
@section('footer')
footer
@show
<!-- 1 输出变量 -->
{{$name}}
<!-- 2 使用php语法 -->
{{time()}}
<!-- 3 注释 -->
{{--注释--}}
<!-- 4 原样输出 @ -->
@{{$name}}
<!-- 5 引入子视图 -->
@include('student/common')
</div>
</body>
</html>
循环语句:
<!-- 6 循环语句 -->
@if($name=='abc')
...
@endif
@unless($name=='abc')
...
@endunless
@for($i=0;$i<5;$i++)
<p>{{$i}}</p>
@endfor
@foreach($student as $student)
{{$student->username}}
@endforeach
@forelse($student as $student)
{{$student->username}}
@empty
@endforelse
url生成
先创建一条路由:
Route::get('test',['uses'=>'StudentController@test','as'=>'test']);
模板中生成url的三种方式:
<!-- 通过路由生成 -->
<a href="{{url('test')}}">url</a>
<!-- 通过控制器/方法名生成 -->
<a href="{{action('StudentController@test')}}">action</a>
<!-- 通过路由别名 -->
<a href="{{route('test')}}">route</a>
引入静态资源
<link rel="stylesheet" type="text/css" href="{{URL::asset('layui/css/layui.css')}}"> // 默认从public开始
<script type="text/javascript" src="{{URL::asset('layui/layui.js')}}"></script>
<img src="{{URL::asset($user->face)}}" > // 显示用户头像 $user->face 是数据库存储的 比如 face/index.jpg 就是 public/face.jpg
控制器里注册变量
class HomeController extends Controller{
public function index(Request $request){
return view('home.index',['user'=>'1234']);
}
}