laravel validate
如何进行验证
典型的注册表单:
<!-- app/views/form.blade.php -->
{{ Form::open(array('url' => 'registration')) }}{{-- Username field. ------------------------}}{{ Form::label('username', 'Username') }} {{ Form::text('username') }} {{-- Email address field. -------------------}} {{ Form::label('email', 'Email address') }} {{ Form::email('email') }} {{-- Password field. ------------------------}} {{ Form::label('password', 'Password') }} {{ Form::password('password') }} {{-- Password confirmation field. -----------}} {{ Form::label('password_confirmation', 'Password confirmation') }} {{ Form::password('password_confirmation') }} {{-- Form submit button. --------------------}} {{ Form::submit('Register') }} {{ Form::close() }}
路由部分:
// app/routes.php
Route::get('/', function() { return View::make('form'); }); Route::post('/registration', function() { // 获取所有表单数据. $data = Input::all(); // 创建验证规则 $rules = array( 'username' => array('alpha_num', 'min:3') ); // 开始验证 $validator = Validator::make($data, $rules); if ($validator->passes()) { // 验证成功 return 'Data was saved.'; } // 验证失败 return Redirect::to('/'); });
可用的验证规则
regex:pattern(正则)
验证此规则的值必须符合给定的正则表达式。
accepted(yes|no|1)
验证此规则的值必须是 yes、 on 或者是 1。这在验证是否同意"服务条款"的时候非常有用。
in:foo,bar,...(in 规则)
验证此规则的值必须在给定的列表中存在。
notin:_foo,bar,...(not in 规则)
验证此规则的值必须在给定的列表中不存在。
alpha(全部字母)
验证此规则的值必须全部由字母字符构成。
numeric(数字)
验证此规则的值必须是一个数字。
alpha_num(字母|数字)
验证此规则的值必须全部由字母和数字构成。
alpha_dash(字母|数字|中划线|下划线)
验证此规则的值必须全部由字母、数字、中划线或下划线字符构成。
url(合法 URL,不严谨)
验证此规则的值必须是一个合法的 URL。
注意: 已经证实此规则不严谨,类似 2http://url.com
的 URL 可以通过验证。
active_url(合法 URL,基于 checkdnsrr)
验证此规则的值必须是一个合法的 URL,根据 PHP 函数 checkdnsrr。
注意: 由于是基于 checkdnsrr 因此也可用于验证邮箱地址是否存在。
email(电子邮件)
验证此规则的值必须是一个合法的电子邮件地址。
image (jpeg|png|bmp|gif)
验证此规则的值必须是一个图片 (jpeg, png, bmp 或者 gif)。
integer(整数)
验证此规则的值必须是一个整数。
ip(IP 地址)
验证此规则的值必须是一个合法的 IP 地址。
before:date(给定日期之前)
验证此规则的值必须在给定日期之前,日期将通过 PHP 函数 strtotime 传递。
after:date(给定日期之后)
验证此规则的值必须在给定日期之后,日期将通过 PHP 函数 strtotime 传递。
between:min,max(min 和 max 之间)
验证此规则的值必须在给定的 min 和 max 之间。字符串、数字以及文件都将使用大小规则进行比较。
confirmed(二次确认域,如“密码的二次确认域”)
验证此规则的值必须和 foo_confirmation 的值相同。比如,需要验证此规则的域是 password,那么在输入中必须有一个与之相同的 password_confirmation 域。
same:field(值与给定域相同)
验证此规则的值必须与给定域的值相同。
size:value(大小与给定域的值相同)
验证此规则的值的大小必须与给定的 value 相同。
对于字符串,value 代表字符的个数,
对于数字,value 代表它的整数值,
对于文件,value 代表文件以KB为单位的大小。
date(合法日期字符串,基于 strtotime)
验证此规则的值必须是一个合法的日期,根据 PHP 函数 strtotime。
dateformat:_format(format 格式 y-m-d H:i:s)
验证此规则的值必须符合给定的 format 的格式,根据 PHP 函数 date_parse_from_format。
different:field(不同于)
验证此规则的值必须与指定的 field 域的值不同。
min:value(最小值)
验证此规则的值必须大于最小值 value。字符串、数字以及文件都将使用大小规则进行比较。
max:value(最大值)
验证此规则的值必须小于最大值 value。字符串、数字以及文件都将使用大小规则进行比较。
mimes:foo,bar,...(MIME 类型限制)
验证此规则的文件的 MIME 类型必须在给定的列表中。
MIME 规则的基础使用
'photo' => 'mimes:jpeg,bmp,png'
注意: 当使用 regex 模式的时候,有必要使用数组指定规则,而不是管道分隔符,特别是正则表达式中包含一个管道字符的时候。
required(必填)
验证此规则的值必须在输入数据中存在。
requiredif:_field,value(当指定域为某个值时,必填)
当指定的域为某个值的时候,验证此规则的值必须存在。
requiredwith:_foo,bar,...(当指定域存在时,必填)
仅当指定的域存在的时候,验证此规则的值必须存在。
requiredwithout:_foo,bar,...(当指定域不存在时,必填)
仅当指定的域不存在的时候,验证此规则的值必须存在。
exists:table,column(必须存在于 table 表的 column 字段数据中)
验证此规则的值必须在指定的数据库的表中存在。
Exists 规则的基础使用
'state' => 'exists:states'
指定列名
'state' => 'exists:states,abbreviation'
您也可以指定更多的条件,将以 "where" 的形式添加到查询。
'email' => 'exists:staff,email,account_id,1'
unique:table,column,except,idColumn(数据库唯一)
验证此规则的值必须在给定的数据库的表中唯一。如果 column 没有被指定,将使用该域的名字。
Unique 规则的基础使用
'email' => 'unique:users'
指定列名
'email' => 'unique:users,email_address'
强制忽略一个给定的 ID
'email' => 'unique:users,email_address,10'
添加额外的where语句
你还可以指定更多条件,这些条件将被添加到查询的"where"语句中:
'email' => 'unique:users,email_address,NULL,id,account_id,1
在上面的规则中,只有account_id 为 1 的行才会被包含到unique检查中。
如何获取错误消息
构造为 JSON 数据(API)
Route::post('/registration', function() { // 获取全部提交数据 $data = Input::all(); // 构造规则数组 $rules = array( 'username' => 'alpha_num' ); // 开始验证 $validator = Validator::make($data, $rules); if ($validator->passes()) { // 验证通过 return 'Data was saved.'; } // 验证失败 // 获取错误消息 $errors = $validator->messages(); // 构造 JSON 响应 return Response::json($errors); });
重定向,直接传递至下一个页面
return Redirect::to('/')->withErrors($validator);
视图中如何获取传递过来的错误消息
注意: $errors
是系统预定义变量,任何模板中均可使用。
获取一个域的第一个错误消息
{{ $errors->first('username') }}
获取一个域的全部错误消息
@foreach($errors->get('username') as $message)<li>{{ $message }}</li>
@endforeach
获取全部域的全部错误消息
@foreach($errors->all() as $message)<li>{{ $message }}</li>
@endforeach
检查一个域是否存在消息
@if($errors->has('email'))<p>Yey, an error!</p>
@endif
以某种格式获取一条错误消息
{{ $errors->first('username', '<span class="error">:message</span>') }}
注意: 默认情况下,消息将使用与 Bootstrap 兼容的语法进行格式化。
以某种格式获取所有错误消息
@foreach($errors->all('<li>:message</li>') as $message){{ $message }}
@endforeach
定制验证规则
注意: 匿名函数 和 指向普通类方法 的 规则扩展 并不推荐,因此直接介绍如何直接扩展官方的验证器。
编写扩展验证器类:
class ExValidator extends Illuminate\Validation\Validator { // 规则 public function validateFoo($attribute, $value, $parameters) { return $value == 'foo'; } // 消息 protected function replaceFoo($message, $attribute, $rule, $parameters) { return str_replace(':foo', $parameters[0], $message); } }
注册定制的验证器扩展:
Validator::resolver(function($translator, $data, $rules, $messages) { return new ExValidator($translator, $data, $rules, $messages); });
详细的编写方法请参照官方类 /vendor/laravel/framework/src/Illuminate/Validation/Validator.php
。
定制验证消息
针对某一个验证规则:
$messages = array('required' => 'The :attribute field is required.',
);
$validator = Validator::make($input, $rules, $messages);
针对指定域的某一规则:
$messages = array('email.required' => 'We need to know your e-mail address!',
);
在语言文件中定义 /app/lang/zh-CN/validation.php
:
'custom' => array('email' => array( 'required' => '请填写您的 email 地址。', ), ),
原文:http://my.oschina.net/5say/blog/186568
我个人更喜欢使用Request方式进行验证;使用laravel的artisan命令 php artisan make:request XxxxxRequest.php中进行验证使用request验证的好处是可以 表单使用ajax提交的时候 框架会自动返回json错误消息,其他提交方式 框架仍然使用$message返回
转载于:https://www.cnblogs.com/qiyongchu/p/5829143.html
laravel validate相关推荐
- laravel ajax返回json,Laravel validate error处理,ajax,json示例
如下所示: public function updateLevelTestRecords(Request $request) { $rules = [ 'uid' => 'required|in ...
- laravel validate 验证器
1.简介 Laravel 提供了多种方法来验证应用输入数据.默认情况下,Laravel 的控制器基类使用ValidatesRequests trait,该trait提供了便利的方法通过各种功能强大的验 ...
- laravel validate验证参数说明
文章目录 validate的介绍 validate的使用 简单的表单验证 关于数组数据的注意事项 validate验证参数说明 accepted active_url after:date after ...
- laravel validate 设置为中文(验证提示为中文)
把 resources\lang 下en 的文件夹 复制在同一目录并改名为 zn 把zn 中的 validation.php文件修改为 https://laravel-china.org/articl ...
- 自定义laravel validate request 返回错误信息格式
场景:api和网站都同时用到了同一个 request,但是api需要返回json数据. 处理:定义基类request,在类中重写failedValidation方法 <?phpnamespace ...
- Laravel POST请求API接口 使用validate表单验证返回欢迎页
突然遇到的问题 就是使用Laravel进行开发API接口的时候 发现在表单验证不通过的时候返回了登录页 猜测问题应该是因为表单验证失败后进行了重定向导致的 因为返回状态码200 网上找了好久没找到 ...
- PHP Lumen Laravel 解决validate方法自定义message无效的问题
PHP Lumen Laravel 解决validate方法自定义message无效的问题 参考文章: (1)PHP Lumen Laravel 解决validate方法自定义message无效的问题 ...
- laravel框架api接口返回Validate Request 一直重定向问题
Validate Request 一直重定向问题 | Laravel China 社区
- php validate form,laravel 中validate验证规则 利用FormRequest进行数据验证
namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class AddCartRequest extend ...
- laravel里面的validate参数介绍
$this->validate([],[],[],[]); //第一个参数是需要进行验证的数据,第二个参数是规则数组,第三个是对进行验证的数据进行自定义显示需哦无信息,第四个参数是对于错误信息中 ...
最新文章
- Response 输出文件流过程中的等待效果
- 数字语音信号处理学习笔记——语音信号的同态处理(3)
- 优化以insert语句导入数据的方式
- x86已安装该产品 剑灵vcredist_MySQL Server v5.7正式版(附安装和配置数据库教程)
- df、du和fdisk命令的区别
- 如何理解const char*, char const*, char*const等
- CVPR 2020|打脸SOTA!不能忍,谷歌发起图像匹配挑战赛
- mysql数据库标识符大小写_SQL语法区分大小写吗?
- python怎么画简单图-Python | 用matplotlib画些简单的图
- 53. PHP 伪静态(2)
- 企业微信双开及三开的方法
- 全自动高清录播服务器,全自动高清录播服务器 高清录播系统
- 计算机指令集类型,指令集分类 (CISC,RISC和VLIW等)
- Java 调用OPENOFFIC 转换文档类型
- Python爬虫的应用:统记词频
- 每日 30 秒 ⏱ 强风吹拂
- 谷歌浏览器被2345主页强制绑定
- 托疫情的“福”,和儿子一起过了个暑假
- 最小元素的min函数
- txt文本的编码格式转换
热门文章
- 计算机专业基础 -- Linux系统相关基础知识
- Linq To EF (添加记录后获取添加的自增ID和叫“ID”的列不是自增列不让插入的问题)...
- Apache的下载安装(主要说的 64位)及问题
- JZOJ.5325【NOIP2017模拟8.21】九九归一
- 王坚数博会演讲实录:“计算经济”是社会发展的新动力
- linux软件包管理rpm
- 实战Nginx与Perl、Java的安装与配置
- 真题很重要,用科学的态度批判性地对待真题同等重要!
- blog推荐 - Sources of Insight
- 159.majority element