一,视图:
1,视图文件在哪里?
- 在laravel项目的resource/view/目录下。
- 视图有必要进行分目录管理。
- 视图的后缀一般为“.blade.php”
- 视图无法通过artisan方式创建
2,视图文件的命名与渲染:
- 文件名习惯小写
- 文件名的后缀为.blade.php 也可以.php后缀
- 因为laravel框架中 有一套模板引擎使用的就是blade,当文件后缀为.blade.php时,可以直接只用标签语法,{{$title}},也可以使用原生的php语法来显示数据
- 当视图文件后缀为.php时,就只能使用php原生的语法来显示数据。
- 两个视图文件同时存在,则.blade.php后缀的优先显示
3,案例:
编写一个路由地址,调用TestController的viewtest方法,展示视图文件(创建两个,一个以.blade.php后缀,一个以.php结尾),用来验证优先级。
实现步骤,
(1.)首先在laravel文件目录下创建两个test文件,一个以.blade.php结尾,一个以.php结尾
test.blade.php
<body>
<center>
<h1>我是test.balde.php</h1>
</center>
</body>
test.php
<body>
<center>
<h1>我是test.php</h1>
</center>
</body>
(2.)在控制器文件TestController写个方法
// 视图方法,判断.blade.php和.php文件后缀的优先级
// viewtest方法名
public function viewtest(){
// test是创建的test文件(视图两个 名都为test,只是后缀不一样)
return view('test');
}
(3,)在laravel项目中的route/web.php声明路由
// 视图,调用在TestController里的viewtest方法
Route::get('viewtest','TestController@viewtest');
(4),在浏览器访问在路由中定义过的viewtest
此时出现的是test.blade.php就说明 .blade.php后缀优先级高于.php后缀
视图也可以分目录管理;
二,变量的分配(assign)与展示
语法:
- view(模板文件名称,数组);,数组就是需要分配的变量集合,数组是一个键值数组,其键与变量名尽量保持一致。
- view(模板文件名称)->with(数组)
- view(模板文件名称)->with(名称,值)->with(名称,值)、
使用view()方式渲染一个视图以后,在**.blade.php**的视图文件中,模板中输出变量使用“{{$变量名}}”
(变量名就是分配过来的数组的键)
案例:将控制器方法中的时间(年月日时分秒)数据传递到视图中去,并且输出
在自定义的TestController.php文件里写一个方法
// 案例:将控制器方法中的时间(年月日时分秒)数据传递到视图中去,并且输出
public function viewtest(){
$date=date('Y-m-d H:i:s');//表达年月日 时分秒
return view('test',['date'=>$date]);//第一个模板文件名称,也就是resources/views/test,,,test是自己建立的
// 将获取到的值输出,,在resources/views/test.blade.php文件里
}
在路由文件里定义路由
Route::get('viewtest','TestController@viewtest');
在resources/views/test.blade.php
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Laravel</title>
<!-- Fonts -->
<link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet">
<!-- Styles -->
<style>
</style>
</head>
<body>
<center>
<h1>我是test.blade.php</h1>
<!-- 输出值的方式。。 -->
<h2>{{$date}}</h2>
</center>
</body>
</html>
三,compact函数使用(传参)
compact函数,是php的内置函数,和laravel框架没有关系,主要作用就是用于打包数组,
语法:
compact (‘变量名1’,‘变量名2’…);
在testcontroller控制器里写,,用compact写和 dump([‘day’=>$day]);这种写法,输出的结果一样。
$day=date('N');
dump(['day'=>$day]);
dump(compact('day'));
die;
或者这么写
public function viewtest(){
$date=date('Y-m-d H:i:s');//表达年月日 时分秒
return view('test',compact('date'));
}
四,循环与分支语法标签【重点】
在视图中遍历数据与原始PHP循环相比:
- 有大括号,则需要去除大括号(不管多少个),然后在当前行最前边写上@
- 在结束循环的@的后面加上结束标签“endXXXXXX”
在php中写法和laravel视图中的写法的不同:
//php的写法
foreach($variable as $key=>$value){
//循环体
}
//在laravel视图中的写法
@foreach($variable as $key=>$value)
//循环体
@endforeach
五,案例:使用循环标签的语法,在视图中输出数据库表数据
在TestController.php里面定义一个方法:
// 案例:使用循环标签的语法,在视图中输出数据,在route/web.php定义路由
public function test4(){
// 获取所有数据
$data=DB::table('member')->get();//或者$data=Member::all()
return view('test4',compact('data'));
}
}
在route/web.php文件里定义一下刚才定义方法的路由
Route::get('test4','TestController@test4');
在resources/views/建立一个test4.blade.php的文件
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Laravel</title>
<!-- Fonts -->
<link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet">
<!-- Styles -->
<style>
</style>
</head>
<body>
<center>
//遍历输出自己的数据库里的值
@foreach($data as $key=>$value)
{{$value->id}}-{{$value->name}}-{{$value->age}}-{{$value->email}}
<br/>
@endforeach
</center>
</body>
</html>
六,if判断
laravel if语句写法:
@if(条件判断式1)
执行的语句1
@elseif(条件判断式2)
执行的语句2
@elseif(条件判断3)
执行语句3
…
@else
默认执行的语句
@endif
七,案例:动态输出今天是星期几,将数字传递给视图,显示今天是星期几,如果传递的数字是7,则输出星期天,将数字转化成数字
在TestController.php里写上,
public function test5(){
// 动态输出今天是星期几,将数字传递给视图,显示今天是星期几,如果传递的数字是7,则输出星期天,将数字转化成数字
//输出星期几的数字
$week=date('N');
//输出传递的是星期几,例如Monday
// $week=date('l');
return view('test5',compact('week'));
}
routes/web.php
Route::get('test5','TestController@test5');
在resources/views/建立一个test5.blade.php的文件
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Laravel</title>
<!-- Fonts -->
<link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet">
<!-- Styles -->
<style>
</style>
</head>
<body>
<center>
传递过来的数据是:{{$week}}
<br />
@if($week==1)
今天是:星期一
@elseif($week==2)
今天是:星期二
@elseif($week==3)
今天是:星期三
@elseif($week==4)
今天是:星期四
@elseif($week==5)
今天是:星期五
@elseif($week==6)
今天是:星期六
@elseif($week==7)
今天是:星期天
@endif
</center>
</body>
</html>