目录
一、视图操作【重点】
1、视图写哪里?
resources/views
2、视图文件的命名与渲染
(1)文件名习惯小写(建议小写)
(2)文件名的后缀是.blade.php (因为laravel里面有一套模板引擎就是使用blade,可以直接使用标签语法{
{ $title }},也可以使用原生的php语法显示数据。)
(3)需要注意的是也可以使用.php 结尾,但是这样的话就不能使用laravel 提供的标签{
{ $title }}语法显示数据,只能使用原生语法<?php echo $title;?>显示数据
两个视图文件同时存在,则.blade.php后缀的优先显示。
案例:编写一个路由地址,调用控制器的test3方法,展示视图test3文件(创建2个,一个以.blade.php结尾,另外一个.php结尾)
Route::get("/test3",[App\Http\Controllers\TestController::class,'test3']); //编写控制器
展示视图的方法
return view('视图文件的名称');
视图可以进行分目录管理的,例如需要展示home/test/test3视图,则可以写成:
Return view('home/test/test3') 当然也支持点写法: view('home.test.test')
3、变量分配与展示
语法:
1 view(模板文件名称,数组) 数组就是需要分配的变量集合,数组是一个键值数组,其键与变量尽量一致
2 view(模板文件名称)->with(数组)
3 view(模板文件名称)- with(名称,值)->with(名称,值)
使用view()方式渲染一个视图后,在.blade.php的视图文件中,模版中输出变量使用“{ {$变量名}}”(变量名就是分配过来数组的键)
4、扩展:compact函数使用(传参)
compact函数,是php内置函数跟laravel框架没有关系。作用主要是用于打包数组的。
语法:compact('变量名1','变量名2',....)
public function test3()
{
$date = date('Y-m-d H:i:s', time());
$day = '三';
// return view('home.test.test3', ['date' => $date, 'day' => $day]);
return view('home.test.test3', compact('date','day'));
}
5、模版中直接使用函数
回顾:在smarty模版引擎中存在一个特殊的符号“|”,称之为变量修饰符。作用就是在视图中解释变量(使用函数去处理变量)。
语法:{
{函数名(参数1,参数2...)}}
说明:函数名可以是php内置的,也可以是laravel框架中定义的。
laravel的时区配置,在config下的app.php 找到timezone 把UTC修改成Asia/Shanghai就可以了,改成PRC也行,或者是Asia/chongqing
案例:在数据库中一般存储时间都是以时间戳去存储的,但是在页面上展示的时候不适合使用时间戳了。需要在展示的时候再对其进行格式化处理,如需要在视图中进行对其格式化则怎么写?
分析:在php中怎么格式化时间戳?使用date函数
语法: date(格式,时间戳)
$time=strtotime('+1 year');
return view('home.test.test3', compact('date', 'day','time'));
一年之后的时间是:{
{date('Y-m-d H:i:s', $time)}}<br>
效果图:
6、循环与分支语法标签【重点】
//在视图里面遍历数据【重点】
//php的写法
foreach ($variable as $key => $value) {
//循环体
}
//laravel中视图的写法
@foreach ($variable as $key => $value)
//循环体
@endforeach
案例:使用循环的标签的语法,在视图中输出数据
$data = DB::table('member')->get();
return view('test4', ['data' => $data]);
id   name   age   email  
<br>
@foreach($data as $key => $value)
{
{$value->id}}   {
{$value->name}}   {
{$value->age}}   {
{$value->email}}<br>
@endforeach
结果图:
在此过程中需要注意的就是get查询到的结果集中每一条记录其实都是一个对象,因此在循环具体字段的时候需要注意使用对象调用属性的方式才可以获取其数据。
//在视图里面可以执行if判断【重点】
//php中的if语法
if(条件表达式1){
语句1
}elseif(条件表达式2){
语句2
}
...
else{
语句
}
//laravel中视图的if语句
@if(条件表达式1)
语句1
@elseif(条件表达式2)
语句2
@else
语句
@endif
案例:要求在php代码中(控制器的方法)动态输出今天的星期数字(1-7),将数字传递给视图,显示出今天是星期几,如假设传递的数字是7,则页面中要输出“星期天”【将数字转化成汉字】
return view('test5',['day'=>date('N')]);
今天是星期
@if($day == '1')
一
@elseif($day == '2')
二
@elseif($day == '3')
三
@elseif($day == '4')
四
@elseif($day == '5')
五
@elseif($day == '6')
六
@else
天
@endif
7、模版继承/包含
继承不仅仅在php类中存在,在视图中同样存在。一般是用于做有公共部分的页面。
案例:编写父级页面,再编写一个子页面(相当于php中的两个类)
编写父级页面:
语法:@yield('名字') 在父级页面中的占位
编写子页面: (可以用之前的模版直接继承刚才父级页面,例如使用test4页面),编写的子页面不需要再去写头和尾,因为首尾父页面已经有了: