
laravel框架知识点
1. 什么是laravel框架
Laravel是一种开源的PHP Web应用程序框架,采用了MVC(模型-视图-控制器)架构模式,旨在帮助开发人员构建优雅、高效的Web应用程序。Laravel提供了许多有用的功能,如路由、中间件、Eloquent ORM、模板引擎、任务调度、事件管理等,使开发人员能够快速构建可扩展、可维护的Web应用程序。Laravel还有一个活跃的社区,提供了丰富的文档、教程和插件,方便开发人员学习和使用。
1.1 Laravel框架的目录结构
1.2 Apache安装与配置
以Apache Lounge网站编译的版本为例,在网站中找到httpd-2.1.38-win32-VC15.zip这个版本下载安装,由于版本仍在更新,下载到的可能是2.4.x的最新版本,但是不影响学习。
1.2.1 配置安装路径
在conf\httpd.conf配置正确的安装路径:
Define SRVROOT "C:\web\apache2.4"
1.2.2 配置服务器域名
在conf\httpd.conf中去掉服务器域名的注释:
ServerName www.example.com:80
1.2.3 安装
安装Apache命令:
httpd -k install -n Apache2.4
1.2.4 卸载
卸载Apache命令:
httpd -k uninstall-n Apache2.4
最后启动Apache服务,选择Start启动服务,当图标由红色变为绿色表示启动成功。
1.3 安装Composer依赖管理工具
安装过程:
- 是否使用开发者模式(Developer mode)。若选中此项,则不提供卸载功能,推荐不选中。
- 选择PHP命令行程序。单击“Browse…”按钮浏览文件,选择C:\web\php7.2\php.exe即可。
- 更新php.ini。若当前php.ini不符合Composer的环境需求,安装程序会提示修改php.ini,并创建备份文件。若php.ini符合需求,则该步骤会自动跳过。
- 安装命令:从“Packagist 中国全量镜像”获取缓存数据,具体命令如下:
composer config -g repo.packagist composer https://packagist.phpcomposer.com
- 取消获取缓存数据的命令:
composer config -g --unset repos.packagist
- 更新Laravel框架命令:
composer update laravel/framework
2. 路由和视图
2.1 配置路由
路由配置文件: routes\web.php
路由示例:
Route::get('/', function () {
return view('welcome');
});
- Route::get()定义路由,get是路由的请求方式。
- / 表示当用户访问网站的首页。
- view()函数表示要显示的视图,welcome表示视图文件名称。
2.2 请求URL示例
2.3 重定向路由
重定向路由的作用:用来实现页面跳转。
重定向路由示例代码:
Route::redirect('/hello', '/xxx');
将路由“hello”重定向到“/xxx”
2.4 控制器Controller
创建控制器的命令:
php artisan make:controller 控制器名
- php artisan表示使用Laravel提供的artisan工具
- make:controller表示生成控制器,在后面书写控制器名
- 控制器名采用大驼峰的形式,后面加上Controller后缀,如TestController
2.5 创建视图文件
视图文件的使用:创建resources\views\index.blade.php文件。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
当前显示的视图文件是index.blade.php
</body>
</html>
视图文件的使用:在控制器中加载视图文件
public function show()
{
// 加载视图文件resources\views\show.blade.php
return view('show');
}
2.6视图中的循环操作
在视图中输出数组时,使用“@foreach”模板语法实现.
循环语句的使用:
控制器代码
public function show()
{
$data = array(['id' => 1, 'name' => 'Tom'], ['id' => 2, 'name' => 'Andy']);
return view('show', ['data' => $data]);
}
视图代码
<body>
<h1>循环操作</h1>
@foreach ($data as $v)
{{ $v['id'] }} - {{ $v['name'] }} <br>
@endforeach
</body>
2.7模板继承的使用:
父页面
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<header>头部区域</header>
<div>
@yield('content')
</div>
<footer>尾部区域</footer>
</body>
</html>
子页面
@extends('parent')
@section('content')
<section>区块内容</section>
@endsection
3. 表单安全和用户认证
3.1 在Laravel中防御CSRF攻击
通过表单发送请求,在视图中使用{{ csrf_field() }}或{{ csrf_token() }}获取令牌。
{{ csrf_field() }} :获取一个隐藏域,自动填入令牌值。
<input type="hidden" name="_token" value="自动填入的令牌值">
{{ csrf_token() }} :获取令牌值,手动填入隐藏域中。
<input type="hidden" name="_token" value="{{ csrf_token() }}">
3.2 在表单中使用CSRF令牌:
<form action="{{ route('trans') }}" method="post">
收款人:<input type="text" name="name"><br>
转账金额:<input type="text" name="money"><br>
{{ csrf_field() }}
<input type="submit" value="转账">
</form>
3.3 常用的验证规则:
3.4 session()函数的使用:
session(['name' => '张三']); // 写入Session
dump(session('name')); // 输出结果:张三
dump(session('age', 0)); // 当读取Session不存在时,返回默认值0
dump(session()->all()); // 获取所有Session
dump(session()->forget('name')); // 删除名称为name的Session
dump(session()->has('name')); // 判断Session是否存在
session()->flush(); // 删除全部Session
3.5 Laravel内置的中间件:
3.6 验证用户登录中间件部分示例代码:
<?php
namespace App\Http\Middleware;
use Closure;
class User
{
public function handle($request, Closure $next)
{
if (!session()->has('users')) {
return redirect('/user/login');
}
return $next($request);
}
}
4 数据库操作
4.1创建laravel数据库
在数据库中创建member表并插入测试数据
#创建数据库,并使用USE选择数据库
CREATE DATABASE `laravel`;
USE `laravel`;
#在数据库中创建member数据表
CREATE TABLE `member` (
`id` INT PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(32) NOT NULL DEFAULT '',
`age` TINYINT UNSIGNED NOT NULL DEFAULT 0,
`email` VARCHAR(32) NOT NULL DEFAULT ''
) ENGINE=InnoDB CHARSET=utf8mb4;
#在member数据表中插入测试数据
INSERT INTO `member` VALUES (1, 'tom', 20, 'tom@laravel.test');
4.2 使用DB类操作数据库
示例代码:
public function database()
{
$data = DB::table('member')->get();
foreach ($data as $v) {
dump($v->id . '-' . $v->name);
}
}
给database()方法设置路由。
Route::get('test/database', 'TestController@database');
4.2 数据库的增删改查
- 使用insert()和insertGetId()方法添加数据
insert()方法:返回值为true或false,表示是否添加成功
insertGetId()方法:返回值为自动增长的id - 修改数据
update()方法用来修改指定的字段
increment()方法用来对数字进行递增
decrement()方法用来对数字进行递减 - 查询数据的方式:
查询多行数据——查询某个字段的值
查询单行数据——排序
查询指定字段的值——分页 - 删除数据
两种方式:使用delete()方法删除指定的记录,使用truncate()方法清空整个数据表。
4.3 数据表迁移
- 创建迁移文件命令
php artisan make:migration 迁移文件名
- 创建paper表迁移文件命令:
php artisan make:migration create_paper_table
- 数据表的字段要求:
id:表的主键,自动增长。
paper_name:试卷名称,VARCHAR(100)类型,不允许重复值。
total_score:试卷总分,TINYINT类似,默认为0。
start_time:试卷开始考试时间,INT类型(保存时间戳)。
duration:考试时间长度,单位为分钟,TINYINT类型。
status:试卷是否启用,TINYINT类型,1表示启用,2表示禁用,默认为1。
created_at:创建时间,TIMESTAMP类型,默认为NULL。
updated_at:更新时间,TIMESTAMP类型,默认为NULL。
- 执行迁移命令:
php artisan migrate
5. 总结
- 介绍了什么是Laravel框架;然后,讲解了开发环境的搭建步骤,完成了Apache安装,以及Composer依赖管理工具安装;最后并对Laravel框架的目录结构进行了演示。
- 介绍了框架中路由的定义和使用,然后讲解了控制器的使用以及如何在控制器中接收用户输入数据,最后讲解了视图的使用。
- 讲解了CSRF攻击和在框架中如何防御CSRF攻击,然后演示Session机制和中间件的使用方法
- 讲解了如何在Laravel框架中操作数据库,主要包括DB类操作数据库、对数据库进行增删改查,以及数据表的迁移。
更多推荐
所有评论(0)