Laravel学习笔记3,视图跟模型

本文详细介绍了Laravel中视图的操作,包括视图文件位置、渲染、变量分配、模板语法,以及视图中的循环和分支。此外,还讲解了CSRF攻击的防范,模型操作的基础,如定义模型、控制器中调用模型,以及数据的增删查改。文章深入浅出,适合Laravel初学者学习。
摘要由CSDN通过智能技术生成

目录

一、视图操作【重点】

1、视图写哪里?

2、视图文件的命名与渲染

3、变量分配与展示

4、扩展:compact函数使用(传参)

5、模版中直接使用函数

6、循环与分支语法标签【重点】

7、模版继承/包含

8、外部静态文件引入方式(了解)

二、CSRF攻击

1、什么是CSRF攻击

2、Laravel中如何避免CSRF攻击

3、从CSRF验证中排除例外路由

三、模型操作(AR模式)【理解】

1、定义模型

2、模型控制器中调用

3、定义测试路由

4、基本操作

(1)添加数据

(2)查询操作

(3)修改数据

(4)删除数据


一、视图操作【重点】

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 &emsp; name &emsp; age &emsp; email &emsp; 
<br>
@foreach($data as $key => $value)
{
  {$value->id}} &emsp; {
  {$value->name}} &emsp; {
  {$value->age}} &emsp; {
  {$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页面),编写的子页面不需要再去写头和尾,因为首尾父页面已经有了:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值