首页 文章 精选 留言 我的

精选列表

搜索[Laravel],共788篇文章
优秀的个人博客,低调大师

Laravel 学习路线【4】控制器

控制器简介 控制器可以将相关的HTTP 请求封装到一个勒种进行处理,控制器目录在 app/Http/Controllers 目录中 定义控制器 <?php namespace App\Http\Controllers; use App\User; use App\Http\Controlelrs\Controller; class UserController extends Controller { //为指定用户显示详情 public function show($id) { return view('user.profile',['user' => User::findOrFail($id)]); } } 我们可以这样定义路由 Route::get('user/{id}','UserController@show'); 如果一个请求匹配到上面URI UserController 的 show 方法就会被执行。路由参数也会传递给当前方法 单动作控制器 如果你想定义一个只处理一个动作的控制器,可以在控制器中定义 __invoke 方法。 <?php namespace App\Http\Controllers; use App\User; use App\Http\Controllers\Controller; class ShowProfile extends Controller { public function __invoke($id) { return view('user.profile',['users' => findOrFail($id)]); } } 当你为这个单动作控制器注册路由的时候,不需要指定方法: Route::get('user/{id}','ShowProfile'); 控制器中间件 中间件可以像这样分配给控制器路由 Route::get('profile','UserController@show')->middleware('auth'); 但是,将中间件放在控制器构造函数中更方便,在控制器的构造函数中使用 middleware 方法你可以很轻松的分配中间件给该控制器。 class UserController extends Controller { //实例化一个新的UserController 实例 public function __construct() { $this->middleware('auth'); $this->middleware('log')->only('index'); $this->middleware('subscribed')->except('store'); } } 在控制器中还可以使用闭包注册中间件,这为我们定义只在某个控制器中使用中间件提供了方便,无需定义完整的中间件类: $this->middleware(function($request,$next){ return $next($request); }) 注:你还可以将中间件分配给多个控制器动作,不过,这意味着你的控制器会变得越来越臃肿,这种情况下,需要考虑将控制器分割成多个更小的控制器。

优秀的个人博客,低调大师

Laravel 5.4--Validate (表单验证) 使用实例

1.视图中的表单 <div class="errors"> @if(count($errors)>0) <div class="box-body"> <div class="alert alert-danger alert-dismissible"> <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> <h4><i class="icon fa fa-ban"></i>错误:</h4> @foreach($errors->all() as $error) {{$error}} @endforeach </div> </div> @endif </div> <!-- 下面是一个简单的表单提交(由于是展示案例 没有写样式) --> <form action="/test" method="post"> <input type="hidden" name="_token" value="{{ csrf_token() }}"> <label> 推荐码:</label> <input type="text" name="code"> <label>人员名称:</label> <input type="text" name="name"> <label>所属单位:</label> <input type="text" name="team"> <label>年 龄:</label> <input type="number" name="age"> <label>毕业院校:</label> <input type="text" name="school"> <label>产品案例网址:</label> <input type="url" name="url"> <button type="submit" class="btn btn-block btn-social">添加数据</button> </form> 2.控制器中验证数据 表单的发送post请求,到test路由中 发送了_token, code, name, team, age, school, url 7个数据; 如果我的路由是以Restfulapi的写法,它会根据我的提交方式自己找到控制器中对应的store方法: Route::resource('test', 'TestController'); 完整的控制器验证方法如下(Validate验证方式) public function store(Request $request) { // $data = \Input::all(); // 数据验证 $this->validate($request, [ 'code' => 'required|digits:32', //必填 必须32位 'name' => 'required|min:2|max:16', //必填 最小2位 最大16位 'team' => 'required|string', //必填 字符串 'age' => 'required|numeric', //必填 数值 'school' => 'required|max:255', //必填 最大255位 'url' => 'required|url' //必填 必须是网址 ]); // 以上是表单验证 没有验证成功是不会走下面的逻辑程序的 而且页面上会响应出抛出的异常信息 .... .... ....} // 规则 $rules = array( 'code' => 'required|digits:32', //必填 必须32位 'name' => 'required|min:2|max:16', //必填 最小2位 最大16位 'team' => 'required|string', //必填 字符串 'age' => 'required|numeric', //必填 数值 'school' => 'required|max:255', //必填 最大255位 'url' => 'required|url' //必填 必须是网址 ); // 验证器 $validator = \Validator::make($data,$rules); // 进行验证 if($validator->passes()){ // 验证成功后的业务逻辑 ... ... }else{ // 失败后 返回提交页的页面并抛出错误 return back()->withErrors('在这里自定义错误原因!'); } 验证规则大全 accepted 在验证中该字段的值必须是yes、on、1或true,这在“同意服务协议”时很有用。 active_url 该字段必须是一个基于PHP函数checkdnsrr 的有效URL after:date 该字段必须是给定日期后的一个值,日期将会通过PHP函数strtotime传递: 'start_date' => 'required|date|after:tomorrow' 你可以指定另外一个比较字段而不是使用strtotime验证传递的日期字符串: 'finish_date' => 'required|date|after:start_date' alpha 该字段必须是字母 alpha_dash 该字段可以包含字母和数字,以及破折号和下划线 alpha_num 该字段必须是字母或数字 array 该字段必须是PHP数组 before:date 验证字段必须是指定日期之前的一个数值,该日期将会传递给PHP strtotime函数。 between:min,max 验证字段尺寸在给定的最小值和最大值之间,字符串、数值和文件都可以使用该规则 boolean 验证字段必须可以被转化为boolean,接收true, false, 1,0, "1", 和 "0"等输入。 confirmed 验证字段必须有一个匹配字段fooconfirmation,例如,如果验证字段是password,必须输入一个与之匹配的passwordconfirmation字段 date 验证字段必须是一个基于PHP strtotime函数的有效日期 date_format:format 验证字段必须匹配指定格式,该格式将使用PHP函数dateparsefromformat进行验证。你应该在验证字段时使用date或dateformat different:field 验证字段必须是一个和指定字段不同的值 digits:value 验证字段必须是数字且长度为value指定的值 digits_between:min,max 验证字段数值长度必须介于最小值和最大值之间 dimensions 验证的图片尺寸必须满足该规定参数指定的约束条件: 'avatar' => 'dimensions:min_width=100,min_height=200' 有效的约束条件包括:min_width, max_width, min_height, max_height, width, height, ratio ratio约束应该是宽度/高度,这可以通过表达式3/2或浮点数1.5来表示: 'avatar' => 'dimensions:ratio=3/2' distinct 处理数组时,验证字段不能包含重复值: 'foo.*.id' => 'distinct' email 验证字段必须是格式化的电子邮件地址 exists:table,column 验证字段必须存在于指定数据表 基本使用: 'state' => 'exists:states' 指定自定义列名: 'state' => 'exists:states,abbreviation' 还可以添加更多查询条件到where查询子句: 'email' => 'exists:staff,email,account_id,1' 这些条件还可以包含!: 'email' => 'exists:staff,email,role,!admin' 还可以传递NULL或NOT NULL到where子句: 'email' => 'exists:staff,email,deleted_at,NULL' 'email' => 'exists:staff,email,deleted_at,NOT_NULL' 有时,你可能需要为exists查询指定要使用的数据库连接,这可以通过在表名前通过.前置数据库连接来实现: 'email' => 'exists:connection.staff,email' file 该验证字段必须是上传成功的文件 filled 该验证字段如果存在则不能为空 image 验证文件必须是图片(jpeg、png、bmp、gif或者svg) in:foo,bar… 验证字段值必须在给定的列表中 in_array:另一个字段 验证字段必须在另一个字段中存在 integer 验证字段必须是整型 ip 验证字段必须是IP地址 JSON 验证字段必须是有效的JSON字符串 max:value 验证字段必须小于等于最大值,和字符串、数值、文件字段的size规则一起使用 mimetypes:text/plain… 验证文件必须匹配给定的MIME文件类型之一: 'video' => 'mimetypes:video/avi,video/mpeg,video/quicktime' 为了判断上传文件的MIME类型,框架将会读取文件内容来猜测MIME类型,这可能会和客户端MIME类型不同。 mimes:foo,bar,… 验证文件的MIMIE类型必须是该规则列出的扩展类型中的一个 MIMIE规则的基本使用: 'photo' => 'mimes:jpeg,bmp,png' 尽管你只需要指定扩展,该规则实际上验证的是通过读取文件内容获取到的文件MIME类型。 完整的MIME类型列表及其相应的扩展可以在这里找到:http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types min:value 验证字段的最小值,和字符串、数值、文件字段的size规则一起使用 nullable 验证字段必须为null,这在验证一些可以为null的原生数据如整型或字符串时很有用。 not_in:foo,bar,… 验证字段值不在给定列表中 numeric 验证字段必须是数值 present 验证字段必须出现在输入数据中但不能为空。 regex:pattern 验证字段必须匹配给定正则表达式 _注:使用regex模式时,规则必须放在数组中,而不能使用管道分隔符,尤其是正则表达式中使用管道符号时。_ required 输入字段值不能为空,以下情况字段值都为空: 值为null 值是空字符串 值是空数组或者空的Coutable对象 值是上传文件但路径为空 required_if:anotherfield,value,… 验证字段在另一个字段等于指定值value时是必须的 required_unless:anotherfield,value,… 除了 anotherfield 字段等于value,验证字段不能空 required_with:foo,bar,… 验证字段只有在任一其它指定字段存在的话才是必须的 required_with_all:foo,bar,… 验证字段只有在所有指定字段存在的情况下才是必须的 required_without:foo,bar,… 验证字段只有当任一指定字段不存在的情况下才是必须的 required_without_all:foo,bar,… 验证字段只有当所有指定字段不存在的情况下才是必须的 same:field 给定字段和验证字段必须匹配 size:value 验证字段必须有和给定值value相匹配的尺寸,对字符串而言,value是相应的字符数目;对数值而言,value是给定整型值;对文件而言,value是相应的文件字节数 string 验证字段必须是字符串 timezone 验证字符必须是基于PHP函数timezoneidentifierslist的有效时区标识 unique:table,column,except,idColumn 验证字段在给定数据表上必须是唯一的,如果不指定column选项,字段名将作为默认column。 指定自定义列名: 'email' => 'unique:users,email_address' 自定义数据库连接 有时候,你可能需要自定义验证器生成的数据库连接,正如上面所看到的,设置unique:users作为验证规则将会使用默认数据库连接来查询数据库。要覆盖默认连接,在数据表名后使用“.”指定连接: 'email' => 'unique:connection.users,email_address' 强制一个唯一规则来忽略给定ID: 有时候,你可能希望在唯一检查时忽略给定ID,例如,考虑一个包含用户名、邮箱地址和位置的”更新属性“界面,当然,你将会验证邮箱地址是唯一的,然而,如果用户只改变用户名字段而并没有改变邮箱字段,你不想要因为用户已经拥有该邮箱地址而抛出验证错误,你只想要在用户提供的邮箱已经被别人使用的情况下才抛出验证错误,要告诉唯一规则忽略用户ID,可以传递ID作为第三个参数: 'email' => 'unique:users,email_address,'.$user->id 如果你的数据表使用主键字段不是id,可以指定第四个输入参数: 'email' => 'unique:users,email_address,'.$user->id.',user_id' 添加额外的where子句: 还可以指定更多条件给where子句: 'email' => 'unique:users,email_address,NULL,id,account_id,1' 在上述规则中,只有account_id为1记录才会进行唯一性检查。 url 验证字段必须是基于PHP函数filter_var过滤的的有效URL size:value 字段值的尺寸需符合给定 value 值。对于字串来说,value 为需符合的字串长度。对于数字来说,value 为需符合的整数值。对于文件来说,value 为需符合的文件大小(单位 kb)。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册