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依赖管理工具

安装过程:

  1. 是否使用开发者模式(Developer mode)。若选中此项,则不提供卸载功能,推荐不选中。
  2. 选择PHP命令行程序。单击“Browse…”按钮浏览文件,选择C:\web\php7.2\php.exe即可。
  3. 更新php.ini。若当前php.ini不符合Composer的环境需求,安装程序会提示修改php.ini,并创建备份文件。若php.ini符合需求,则该步骤会自动跳过。
  4. 安装命令:从“Packagist 中国全量镜像”获取缓存数据,具体命令如下:
composer config -g repo.packagist composer https://packagist.phpcomposer.com
  1. 取消获取缓存数据的命令:
composer config -g --unset repos.packagist
  1. 更新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 数据库的增删改查

  1. 使用insert()和insertGetId()方法添加数据
    insert()方法:返回值为true或false,表示是否添加成功
    insertGetId()方法:返回值为自动增长的id
  2. 修改数据
    update()方法用来修改指定的字段
    increment()方法用来对数字进行递增
    decrement()方法用来对数字进行递减
  3. 查询数据的方式:
    查询多行数据——查询某个字段的值
    查询单行数据——排序
    查询指定字段的值——分页
  4. 删除数据
    两种方式:使用delete()方法删除指定的记录,使用truncate()方法清空整个数据表。

4.3 数据表迁移

  1. 创建迁移文件命令
php artisan make:migration 迁移文件名
  1. 创建paper表迁移文件命令:
php artisan make:migration create_paper_table
  1. 数据表的字段要求:
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
  1. 执行迁移命令:
php artisan migrate

5. 总结

  1. 介绍了什么是Laravel框架;然后,讲解了开发环境的搭建步骤,完成了Apache安装,以及Composer依赖管理工具安装;最后并对Laravel框架的目录结构进行了演示。
  2. 介绍了框架中路由的定义和使用,然后讲解了控制器的使用以及如何在控制器中接收用户输入数据,最后讲解了视图的使用。
  3. 讲解了CSRF攻击和在框架中如何防御CSRF攻击,然后演示Session机制和中间件的使用方法
  4. 讲解了如何在Laravel框架中操作数据库,主要包括DB类操作数据库、对数据库进行增删改查,以及数据表的迁移。
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐