[bh]Laravel 5.5.28框架简介 www.bhlaravel.com

关联模型 https://learnku.com/docs/laravel/5.5/eloquent-relationships/1333

Cache缓存系统 https://learnku.com/docs/laravel/5.5/cache/1316

Laravel 为不同的缓存系统提供了统一的 API(在框架中的写法)。缓存配置位于 config/cache.php。在该文件中你可以指定在应用中默认使用哪个缓存驱动。Laravel 目前支持主流的缓存后端如 Memcached 和 Redis 等。
主要方法:
Cache::put() 会覆盖原有值
Cache::get()
Cache::add() 方法将不存在于缓存中的数据放入缓存中,如果存放成功返回 true ,否则返回 false,不会覆盖已存在的键的值
Cache::pull()
Cache::forever() 会覆盖原有值
Cache::forget()
Cache::has()
系统默认是使用文件缓存,其缓存文件存储的位置位于(storage/framework/cache/data):
Cache::increment(‘key’);
Cache::increment(‘key’, $amount);
Cache::decrement(‘key’);
Cache::decrement(‘key’, $amount);

获取并存储 $value = Cache::remember(‘key’, $minutes, function() {}) 比较典型的操作就是在获取微信的accesstoken的时候可以使用。原因是accesstoken本身一天只有2000次的配额,而其有7200s的有效期,在有效期内可以不用去刷新请求。

Session会话控制 https://learnku.com/docs/laravel/5.5/session/1301

Session::put('key', 'value');			Session中存储一个变量
$value = Session::get('key');			Session中获取一个变量
$value = Session::get('key', 'default');	Session中获取一个变量或返回一个默认值(如果变量不存在)
$value = Session::get('key', function() { return 'default'; });
Session::all();						Session中获取所有变量
Session::has('users')				检查一个变量是否在Session中存在
Session::forget('key');				Session中删除一个变量
Session::flush();					Session中删除所有变量
补充:session方法也可以在视图中使用,如:{{ Session::get('code')}};
在后期如果使用Laravel框架自带的验证功能模块(Auth)的话,则session就可以不需要使用了。

另外,在laravel框架中还支持快捷函数session(),也可以设置和使用session的。
两个语法:
	语法1:设置session
		session([key => value]);
	语法2:获取session的值
		session(key);


Response响应 https://learnku.com/docs/laravel/5.5/responses/1298

  1. 提示:在laravel框架中,不允许向浏览器响应布尔值。
  2. JSON响应 return response()->json([ ‘name’ => ‘Abigail’, ‘state’ => ‘CA’]); 浏览器响应头 Content-Type:json;
  3. 重定向 https://learnku.com/docs/laravel/5.5/responses/1298#redirects
  4. 1

验证码 https://packagist.org/?query=captcha

  1. composer require mews/captcha
  2. https://github.com/mewebstudio/captcha

数据分页 https://learnku.com/docs/laravel/5.5/pagination/1328

显示分页结果 https://learnku.com/docs/laravel/5.5/pagination/1328#displaying-pagination-results

文件上传 https://learnku.com/docs/laravel/5.5/filesystem/1319#file-uploads

关于项目中使用路径(“./”与“/”)的说明:
如果一个路径是给php代码使用的则建议使用“./”,如果路径是给前端浏览器使用的则使用“/”。【在后端代码中,/表示的不是站点或项目根目录,而是表示磁盘根目录】

自动验证 https://learnku.com/docs/laravel/5.5/validation/1302

可用的验证规则 https://learnku.com/docs/laravel/5.5/validation/1302#available-validation-rules
https://www.jianshu.com/p/9e7aa6fe81ab
安装语言包 composer require laravel-lang/lang:~3.0 https://github.com/Laravel-Lang/lang
Copy the folders (and JSON files) of languages that you want to use, into the directory resources/lang of your Laravel application (or app/lang in Laravel 4).
config/app.php ‘locale’ => ‘zh-CN’,
注意:并不是所有的字段都有对应的翻译(或者有的翻译可能不是很准确),如果想自己定义翻译,则需要去修改语言包文件代码

查看验证错误信息 https://learnku.com/docs/laravel/5.5/validation/1302#quick-displaying-the-validation-errors

正如前面所提到的,Laravel 会自动把用户重定向到先前的位置。另外,所有的验证错误信息会被自动 闪存至 session。

       $this->validate($request, [
                // 此处是一个键值数组            “验证的字段名”  =>    "规则1|规则2|规则3...."
                'name' => 'required|min:2|max:20|unique:member',//string 类型默认验证最小长度,最大长度
                'age' => 'required|integer|min:1|max:100',//int 类型默认验证最小值最大值
                'email' => 'required|email',
                // 验证码验证规则
                'yzm' => 'required|captcha'
            ]

模型操作

Eloquent ORM https://learnku.com/docs/laravel/5.5/eloquent/1332 find get all save create update delete
总之一句话:在DB::table中能使用的方法,在模型中同样可以使用。
DB::table(‘xxx’) 等价于 Xxx模型

模型定义

第一:(必做)定义一个 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、save方法的时候最好就得写上这个属性) ,反向指定的属性叫做:$guarded

基本操作

模型的使用:模型在控制器中的使用方式有2种
①直接像使用DB门面一样的操作方式:以调用静态方法为主的形式,该形式下模型不需要实例化,例如:Member::get() 等价于 DB::table(‘member’) -> get();
②实例化模型然后再去使用模型类(普通)
例如: m o d e l = n e w M e m b e r ( ) ; model = new Member(); model=newMember();model -> get();
两种形式的选择标准:
如果使用的方法都是laravel框架自带的,则任意选择;
如果使用的方法有用户自己在模型中定义的,使用第②种形式。

CSRF是跨站请求伪造(Cross-site request forgery)的英文缩写

https://learnku.com/docs/laravel/5.5/csrf/1295

  1. Laravel框架中避免CSRF攻击很简单:Laravel自动为每个用户Session生成了一个CSRF Token,该Token可用于验证登录用户和发起请求者是否是同一人,如果不是则请求失败。【该原理和验证码的原理是一致】
  2. laravel中关闭CSRF的方法 https://blog.csdn.net/wangrui12138/article/details/69548702

模版继承@extends 包含@include

https://blog.csdn.net/weixin_44535476/article/details/89074893

继承语法:
子模版中按以下语法书写:
@extends(‘需要继承的模版文件名’) 其名称要是完整的路径,类似view视图路径
通过section标签绑定区块/部件到父级页面,区块名称就是父级页面yield标签的参数名。
@section(区块名称)
代码
@endsction

Blade模板变量输出

https://blog.csdn.net/qq_41825819/article/details/101165897
Laravel 文档阅读:Blade 模版 https://learnku.com/docs/laravel/5.5/blade/1304

@if($id =='12')
    it is {{$12}}
@else
    it is 11
@endif
@foreach($user_list as $user)
    <p>it is {{$user->id}}</p>
@endforeach

视图文件的命名与渲染

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

展示视图的方法:
return view(‘视图文件的名称’);

视图可以进行分目录管理的,例如需要展示home/test/test2视图,则可以写成:
return view(‘home/test/test2’) 当然也支持点写法:view(‘home.test.test2’)

提示:变量在视图中展示的时候,在原先PHP文件中怎么写,在视图中依旧按照原先的方式进行编写,只需要写好之后在最外层套2个“{ }”即可。例如对于时间戳的格式化:{{date(‘Y-m-d H:i:s’,$data)}}

数据库请求构建器

https://learnku.com/docs/laravel/5.5/queries/1327#introduction

  1. insert(数组)可以同时添加一条或多条,返回值是布尔类型。
  2. insertGetId(一维数组),只能添加一条数据,返回自增的id。
  3. update increment decrement 返回受影响行数
  4. get 取多行数据 first 取单行数据 value 获取单个字段的值
  5. delete

接收用户输入(与文档有区别)

  1. 获取请求https://learnku.com/docs/laravel/5.5/requests/1297#accessing-the-request
  2. 接收用户输入的类:Illuminate\Support\Facades\Input
    Facades:“门面”的思想。门面是介于一个类的实例化与没有实例化中间的一个状态。其实是类的一个接口实现。在这个状态下可以不实例化类但是可以调用类中的方法。说白了就是静态方法的调用。
Input::get(‘参数的名字’, ‘如果参数没有被传递使用该默认值’)    //类似php里三元运算符
Input::all(): 获取所有的用户的输入
Input::get('参数的名字'): 获取单个的用户的输入
Input::only([ ‘id’,’age’]): 获取指定几个用户的输入
Input::except([ ‘id’,’age’]): 获取指定几个用户的输入以外的所有的参数
Input::has('name'):判断某个输入的参数是否存在

上述方法既可以获取get中的信息,也可以获取post中信息。

  1. 在laravel中如果需要使用facades的话,但是又不想写那么长的引入操作:
    Use Illuminate\Support\Facades\Input
    则可以在config/app.php中定义长串的别名(在aliases数组中定义别名):
打印输出

在Laravel中友好输出函数:
dump()
dd() // =dump + die //dd函数之后的内容将不会继续执行;

控制器

  1. 自动生成 php artisan make:controller [路径/]Test02Controller

路由

  1. get post match anyhttps://learnku.com/docs/laravel/5.5/routing/1293#53ca0c
  2. 命名路由 -->路由别名 模版使用 {{route(‘route_alias’)}}
  3. 扩展补充:查看系统已经有的路由命令:#php artisan route:list
  4. // 针对分目录管理的控制器路由,其中的目录分隔符在此处已经变成了命名空间分隔符,因此得使用“\”
    Route::get(‘admin_test1’, ‘Admin\TestController@test1’);
  5. php artisan route:list | findstr article
  6. 2

项目创建

  1. 创建项目必须是空目录 composer create-project laravel/laravel=5.5.28 --prefer-dist ./
  2. php artisan --version 查看laravel版本
  3. php7.0 最大支持laravel版本 5.5.28

简介

  1. 数据库迁移工具、单元测试
  2. Laravel框架有一个特点,所有的URL访问都必须事先定好路由规则。
  3. httpd.conf配置文件需要开启的模块:
    LoadModule deflate_module modules/mod_deflate.so
    LoadModule rewrite_module modules/mod_rewrite.so
  4. 1
  5. 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值