Laravel使用框架介绍(持续更新)

一、Laravel安装

通过composer 安装:(如何安装composer可以去官网下载:下载地址
composer命令:

composer create-project laravel/laravel --prefer-dist ./

如果要给项目命名则可以通过:

composer create-project laravel/laravel --prefer-dist 项目名

二、目录结构分析

  1. app目录:项目的核心目录,主要用于存放核心代码,也包括控制器、模型。
    比如控制器存放如下位置:app/Http/Controllers

    模型文件存放位置,模型文件直接写在app目录下即可,但是也可以在该目录下建立其他目录用于专门存放模型文件,例如建立Admin目录专门存放后台需要的模型文件,建立Home目录存放前台模型文件目录

  2. bootstrap目录,laravel启动目录

  3. config目录,项目的配置目录,主要存放配置文件,比如数据库的配置:
    App.php:项目主要配置文件;
    Auth.php:用于定义用户认证(登录)的配置文件;
    Database.php:针对数据库的配置;
    Filesystems.php:上传文件、文件存储需要使用到的配置文件;

  4. database目录,数据迁移目录:
    存储跟数据表相关的操作类文件(迁移文件【创建数据表的类文件】、种子文件【存放一些数据表的数据填充文件】)。

  5. public目录,项目的入口文件和系统的静态资源目录(css,img,js,uploads)
    后期使用的外部静态文件(js、css、图片等)都需要放到Public目录下。
    当然重点的是项目单一入口文件也在这个目录下。因此后续配置虚拟主机的时候需要将站点位置指定到public下。

  6. resources目录,存放视图文件,还有就是语言包文件的目录
    Lang目录:语言包目录(如果项目需要本地化则需要配置语言包)
    Views目录:视图文件存储目录(视图文件也可以分目录管理)

  7. routes目录,是定义路由的目录,web.php是定义路由的文件

  8. storage目录,主要是存放缓存文件和日志文件,注意,如果在linux环境下,该目录需要有可写权限。(后期用户上传文件如果存在本地则也在storage下)

  9. vendor目录,主要是存放第三方的类库文件,laravel思想主要是共同的开发,不要重复的造轮子(例如,里面可能存在验证码类,上传类,邮件类),该目录还存放laravel框架的源码。注意如果要使用composer软件管理的,composer下载的类库都是存放在该目录下面的。

  10. .env文件:主要是设置一些系统相关的环境配置文件信息。config目录里面的文件配置内容一般都是读取该文件里面的配置信息(config里面的配置项的值基本都是来自.env文件)。

  11. artisan脚手架文件,主要用于生成的代码的(自动生成),比如生成控制器,模型文件等。
    执行命令:#php artisan 需要执行的指令
    要求1:php必须添加环境变量,并且保证版本;
    要求2:artisan必须存在命令行当前的工作路径下;

  12. composer.json依赖包配置文件
    声明当前需要的软件依赖,但是不能删除,composer需要使用。

三、路由配置文件

通俗的讲,路由就是访问地址形式

在Laravel框架中,其并没有指定固定参数,其路由必须要手工进行配置。

  1. 路由定义格式:
Route::请求方式('请求的URL', 匿名函数或控制响应的方法)
  1. 路由请求方式:
    Get表示支持get请求方式的路由;
    Post表示支持post请求方式的路由;
    Match表示匹配固定(自己定义)的请求方式的路由;
    Any表示匹配任意请求方式的路由;

语法上match比get/post/any多一个参数:
Route::match(匹配的请求类型,地址,回调);
匹配请求类型要求是数组格式的声明(建议使用短数组)。
在这里插入图片描述

  1. 路由参数

参数分为必选参数和可选参数。

路由参数的传递通过路由地址中的“{参数名}”的形式来进行传递,该形式是必选参数的形式,可以选的则使用“{参数名?}”。
在这里插入图片描述

  1. 路由别名
    路由别名相当于在路由定义的时候,为路由起了一个别名,在以后的程序中可以通过这个别名来获取路由的信息。
Route::any('/test5',function(){
	echo "当前的用户id是" . $_GET['id'];
}) -> name(‘名字’);

调用该路由则可以写成:route(‘名字’);
查看系统已经有的路由命令:#php artisan route:list

  1. 路由群组
    比如,你想要为所有路由URIs前面添加前缀admin
Route::group(['prefix' => 'admin'], function () {
    Route::get(test1, function ()    {
        // 匹配 "/admin/test1" URL
    });

四、控制器使用

其位置位于app/Http/Controller
控制器文件命名:大驼峰的控制器名 + Controller.php
如果需要创建一个商品goods控制器,则命名为:GoodsController.php

  1. 创建控制器
    控制器基础结构代码,不需要自己去手动编写,可以通过artisan命令行来自动生成。
php artisan make:controller 控制器名(大驼峰)Controller关键词

用artisan命令创建TestController.php文件。先确定命令:

php artisan make:controller TestController

2.控制器路由
路由设置格式基本相同,只是将匿名函数换成‘控制器类名@方法名’
定义格式如下:

Route::请求方法(路由表达式,控制器@方法')
  1. 控制器分目录管理
    先建立相关的区分目录
    创建控制器文件(使用artisan命令创建)
    在这里插入图片描述
  2. 接收用户输入
    接收用户输入的类:Illuminate\Support\Facades\Input
    Facades:“门面”的思想。门面是介于一个类的实例化与没有实例化中间的一个状态。其实是类的一个接口实现。在这个状态下可以不实例化类但是可以调用类中的方法。说白了就是静态方法。
Input::get(‘参数的名字’, ‘如果参数没有被传递使用该默认值’) 
Input::all(): 获取所有的用户的输入
Input::get(''): 获取单个的用户的输入
Input::only([ ]): 获取指定几个用户的输入
Input::except([ ]): 获取指定几个用户的输入以外的所有的参数
Input::has('name'):判断某个输入的参数是否存在

在laravel中如果需要使用facades的话,但是又不想写那么长的引入操作:

Use Illuminate\Support\Facades\Input

则可以在config/app.php中定义长串的别名(在aliases数组中定义别名)

在laravel中不仅仅是Input门面可以获取用户的输入,Request门面也可以获取用户输入的,其语法和Input一样,也存在get、all、only等方法。

五、DB类操作数据库

  1. 增加信息
    对数据库中的某个表增加数据主要有两个函数可以实现,分别是insert()和insertGetId()
    insert(数组)可以同时添加一条或多条,返回值是布尔类型。
    insertGetId(一维数组),只能添加一条数据,返回自增的id。
DB::table('无前缀的表名') -> insert();		连贯操作/链式操作

插入多条数据

DB::table('表名')—> insert(['key' => 'value','key' => 'value'],[],[])
  1. 修改数据
    数据修改可以使用update()、increment()和decrement()函数来实现。
    Update表示可以修改整个记录中的全部字段;
    Increment和decrement表示修改数字字段的数值(递增或者递减),典型的应用:记录登录次数、积分的增加;
    在这里插入图片描述
    其返回的结果表示受到影响的行数。
  2. 查询数据
    取出基本数据
DB::table('member')->get();
where方法之后继续调用where方法。
-> where() -> where() -> where()..			这个语法是并且(and)关系语法。
-> where() -> orWhere() -> orWhere()…		这个语法是或者(or)关系语法。
Orwhere方法的参数与where一致。

取出单行数据

DB::table('member')->where('id','1')->first();//返回值是一个对象
等价于limit 1

获取某个具体的值

DB::table('member')->where('id','1')->value('name');

获取某些字段数据

$users = DB::table('member')->select('name', 'email')->get();
$users = DB::table('member')->select('name as user_name')->get();

排序操作

DB::table('member')->orderBy('age','desc')->get();

分页操作

DB::table('member')->limit(3)->offset(2)->get();
Limit:表示限制输出的条数
Offset:从什么地方开始
组合起来等价于limit 5,5
  1. 删除数据
DB::table('table_name')->where('id','1')->delete();
DB::table(‘member’) -> truncate();
  1. 执行任意的SQL语句
    执行任意的insert update delete语句【影响记录的语句使用statement语法】
DB::statement(“insert into member values(null,’’)”);

执行任意的select语句【不影响记录的语句使用select语法】

$res = DB::select("select * from member"); 

六、视图操作

视图位置:resource/views

  1. 视图文件的命名与渲染
    (1)文件名习惯小写(建议小写)
    (2)文件名的后缀是 .blade.php(因为laravel里面有一套模板引擎就是使用blade,可以直接使用标签语法{{ $title }}, 也可以使用原生的php语法显示数据。)
    (3)需要注意的是也可以使用.php结尾,但是这样的话就不能使用laravel提供的标签{{ $title }}语法显示数据,只能使用原生语法 <?php echo $title;?> 显示数据
    两个视图文件同时存在,则.blade.php后缀的优先显示。

  2. 展示视图的方法

Return view(‘视图文件的名称’);

视图可以进行分目录管理的,例如需要展示home/test/test3视图,则可以写成:

Return view(‘home/test/test3’) 

当然也支持点写法:

view(‘home.test.test3’)

①view(模板文件名称,数组) 数组就是需要分配的变量集合,数组是一个键值数组,其键与变量名尽量一致
②view(模板文件名称)->with(数组)
③view(模板文件名称)->with(名称,值)->with(名称,值)

可以用Compact函数:
Compact函数,是php内置函数跟laravel框架没有关系。作用主要是用于打包数组的。
语法:compact(‘变量名1’,’变量名2’,…);

  1. 模板中直接使用函数
    在laravel中。视图调用函数其语法基本与js、php的语法一致,只不过要求左右包含大括号:
    语法:{{函数名(参数1,参数2…)}}
  2. 循环与分支语法标签
    在这里插入图片描述
    在这里插入图片描述
  3. 外部静态文件引入方式
    在laravel中系统封装了一个方法asset:
    在这里插入图片描述

七、Laravel避免CSRF攻击

  1. 通过csrf验证
    在laravel中csrf验证机制默认是开启的。
    在表单中,带上csrf需要token值,随着请求传递给后续的方法。
    针对csrf_token方法的简化:{{csrf_field()}}
    两者的区别:
    Csrf_token只是输出token的值
    Csrf_field输出了一个整个的input隐藏域
    大部分情况下可以自己根据情况选择。但是有一个情况下开发者是没有选择权限的,必须需要使用csrf_token的,这个情况就是使用异步提交表单的方式。
  2. 从CSRF验证中排除例外路由
    并不是所有请求都需要避免CSRF攻击,比如去第三方API获取数据的请求。
    可以通过在VerifyCsrfToken(app/Http/Middleware/VerifyCsrfToken.php)中间件中将要排除的请求URL添加到$except属性数组中:
    在这里插入图片描述
    多个元素之间通过“,”分割,遵循数组写法。
    如果需要排除全部路由使用csrf的话,则可以写成:"*"

八、模型操作

  1. 定义模型
    定义模型的位置,默认是在app目录下面,但是为了管理方便,建议分目录进行创建
  2. 命名规则
    本身laravel对模型的命名没有严格的要求,一般采用 表名(首字母大写).php
    比如:Member.php User.php Goods.php
  3. 创建模型
php artisan make:model Home/Member
  1. 定义模型注意事项

    第一:(必做)定义一个 t a b l e 属 性 , 值 是 不 要 前 缀 的 表 名 , 如 果 不 指 定 则 使 用 类 名 的 复 数 形 式 作 为 表 名 。 如 果 模 型 为 M e m b e r 模 型 在 不 指 定 t a b l e 属 性 的 情 况 下 , 其 默 认 会 去 找 m e m b e r s 表 。 修 饰 词 : p r o t e c t e d 。 第 二 : ( 可 选 ) 定 义 table属性,值是不要前缀的表名,如果不指定则使用类名的复数形式作为表名。如果模型为Member模型在不指定table属性的情况下,其默认会去找members表。修饰词:protected。 第二:(可选)定义 table使MembertablemembersprotectedprimaryKey属性,值是主键名称,如果需要使AR模式的find方法,则可能需要指定主键(Model::find(n)),在主键字段不是id的时候则需要指定主键。修饰词:protected
    第三: (可选)定义 t i m e s t a m p s 属 性 , 值 是 f a l s e , 如 果 不 设 置 为 f a l s e , 则 默 认 会 操 作 表 中 的 c r e a t e d a t 和 u p d a t e d a t 字 段 , 我 们 表 中 一 般 没 有 这 两 个 字 段 , 所 以 设 置 为 f a l s e , 表 示 不 要 操 作 这 两 个 字 段 。 修 饰 词 : p u b l i c 第 四 : ( 可 选 ) 定 义 timestamps属性,值是false,如果不设置为false,则默认会操作表中的created_at和updated_at字段,我们表中一般没有这两个字段,所以设置为false,表示不要操作这两个字段。修饰词:public 第四:(可选)定义 timestampsfalse,falsecreatedatupdatedat,false,publicfillable属性,表示使用模型插入数据时,允许插入到数据库的字段信息。修饰词:protected
    在这里插入图片描述
    使用模型中create插入数据时,要设置 f i l l a b l e 允 许 入 库 的 字 段 , 使 用 fillable允许入库的字段,使用 fillable使guarded是设置排除入库的字段。

九、自动验证

  1. 基本语法
    使用控制器中的validate方法来完成, t h i s − &gt; v a l i d a t e ( this-&gt;validate( this>validate(request,[验证规则]);
    如果验证失败,laravel会自动将用户重定向回上一个位置,并将验证错误信息一次性存放到session中。
    在这里插入图片描述
  2. 输出错误信息
    在这里插入图片描述
    在这里插入图片描述
  3. 把输出效果转换成中文
    由于中文和英文都是属于语言范畴,如果要切换提示文字,则需要有中文语言包的支持。目前框架只有en语言包,则需要其他语言包需要去下载。
    在官网搜索laravel-lang
安装命令:# composer require caouecs/laravel-lang:~3.0

语言包文件在vendor/caoue/laravel-lang中;将你需要的语言目录复制到resources/lang目录下即可。
在文件(config/app.php)中修改locale的值,改成你需要使用的语言简称。
简称其实就是语言包的文件夹名称。

注意:并不是所有的字段都有对应的翻译(或者有的翻译可能不是很准确),如果想自己定义翻译,则需要去修改语言包文件代码。
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值