Laravel框架表单验证详解
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Laravel 框架表单验证详解
基础验证例子 复制代码 代码如下:
$validator = Validator::make( array('name' => 'Dayle'), array('name' => 'required|min:5') ); 传递给 make 函数的第一个参数是待验证的数据,第二个参数是对该数据需要应用的验证规则。 多个验证规则可以通过 "|" 字符进行隔开,或者作为数组的一个单独的元素。 通过数组指定验证规则 复制代码 代码如下:
有些时候,您可能希望只对一个指定的域指定定制的错误消息: 对一个指定的域指定定制的错误消息 复制代码 代码如下:
$messages = array( 'email.required' => 'We need to know your e-mail address!', );
在一些情况下,您可能希望在一个语言文件中指定错误消息而不是直接传递给 Validator。为了实现 这个目的,请在 app/lang/xx/validation.php 文件中添加您的定制消息到 custom 数组。 在语言文件中指定错误消息
验证此规则的值必须符合给定的正则表达式。
注意: 当使用 regex 模式的时候,有必要使用数组指定规则,而不是管道分隔符,特别是正则 表达式中包含一个管道字符的时候。 required
验证此规则的值必须在输入数据中存在。 required_if:field,value
当指定的域为某个值的时候,验证此规则的值必须存在。 required_with:foo,bar,...
复制代码 代码如下: 'state' => 'exists:states'
指定列名 复制代码 代码如下:
'state' => 'exists:states,abbreviation'
您也可以指定更多的条件,将以 "where" 的形式添加到查询。 复制代码 代码如下:
'email' => 'exists:staff,email,account_id,1' image
$failed = $validator->failed(); 文件验证 Validator 类提供了一些验证规则用于验证文件,比如 size、mimes 等。在验证文件的时候,您可 以和其他验证一样传递给验证器。 附带错误消息 在一个 Validator 实例上调用 messages 函数之后,将会得到一个 MessageBag 实例,该实例拥有 很多处理错误消息的方便的函数。 获取一个域的第一个错误消息 复制代码 代码如下:
验证此规则的值必须是一个合法的 URL。 定制错误消息 如果有需要,您可以使用定制的错误消息代替默认的消息。这里有好几种定制错误消息的方法。 传递定制消息到验证器 复制代码 代码如下:
$messages = array( 'required' => 'The :attribute field is required.', ); $validator = Validator::make($input, $rules, $messages);
Unique 规则的基础使用 复制代码 代码如下:
'email' => 'unique:users' 指定列名 'email' => 'unique:users,email_address' 强制忽略一个给定的 ID 'email' => 'unique:users,email_address,10' url
所以,在跳转之后,您可以在视图中使用自动绑定的 $errors 变量:
复制代码 代码如下:
<?php echo $errors->first('email'); ?>
可用的验证规则
下面是一个所有可用的验证规则的列表以及它们的功能:
复制代码 代码如下:
Accepted Active URL After (Date) Alpha Alpha Dash Alpha Numeric Before (Date) Between Confirmed Date Date Format Different E-Mail Exists (Database) Image (File) In Integer IP Address Max
if ($validator->fails())
{ // The given data did not pass validation }
如果验证失败,您可以从验证器中获取错误消息。 复制代码 代码如下:
$messages = $validator->messages();
您也可以使用 failed 函数得到不带错误消息的没有通过验证的规则的数组。 复制代码 代码如下:
验证此规则的值必须是一个图片 (jpeg, png, bmp 或者 gif)。 in:foo,bar,... 验证此规则的值必须在给定的列表中存在。 integer 验证此规则的值必须是一个整数。
验证此规则的值必须是一个合法的 IP 地址பைடு நூலகம் max:value
验证此规则的值必须小于最大值 value。字符串、数字以及文件都将使用大小规则进行比较。 mimes:foo,bar,... 验证此规则的文件的 MIME 类型必须在给定的列表中。 MIME 规则的基础使用 复制代码 代码如下:
注意: :attribute 占位符将被实际的进行验证的域的名字代替,您也可以在错误消息中使用其他占 位符。
其他验证占位符 复制代码 代码如下:
$messages = array( 'same' => 'The :attribute and :other must match.', 'size' => 'The :attribute must be exactly :size.', 'between' => 'The :attribute must be between :min - :max.', 'in' => 'The :attribute mwww.visa158.com following types: :values', );
foreach ($messages->all('<li>:message</li>') as $message) { // } 错误消息 & 视图 一旦您执行了验证,您需要一种简单的方法向视图反馈错误消息。这在 Lavavel 中能够方便的处理。 以下面的路由作为例子: 复制代码 代码如下:
Route::get('register', function()
{ return View::make('user.register'); }); Route::post('register', function() { $rules = array(...); $validator = Validator::make(Input::all(), $rules); if ($validator->fails()) { return Redirect::to('register')->withErrors($validator); } });
'photo' => 'mimes:jpeg,bmp,png' min:value
验证此规则的值必须大于最小值 value。字符串、数字以及文件都将使用大小规则进行比较。 not_in:foo,bar,...
验证此规则的值必须在给定的列表中不存在。 numeric
验证此规则的值必须是一个数字。 regex:pattern
if ($messages->has('email')) {
// }
以某种格式获取一条错误消息 复制代码 代码如下:
echo $messages->first('email', '<p>:message</p>');
注意: 默认情况下,消息将使用与 Bootstrap 兼容的语法进行格式化。 以某种格式获取所有错误消息 复制代码 代码如下:
active_url
验证此规则的值必须是一个合法的 URL,根据 PHP 函数 checkdnsrr。
after:date
验证此规则的值必须在给定日期之后,日期将通过 PHP 函数 strtotime 传递。
alpha 验证此规则的值必须全部由字母字符构成。
alpha_dash 验证此规则的值必须全部由字母、数字、中划线或下划线字符构成。
date_format:format 验证此规则的值必须符合给定的 format 的格式,根据 PHP 函数 date_parse_from_format。
different:field 验证此规则的值必须与指定的 field 域的值不同。
email 验证此规则的值必须是一个合法的电子邮件地址。
exists:table,column 验证此规则的值必须在指定的数据库的表中存在。 Exists 规则的基础使用
alpha_num 验证此规则的值必须全部由字母和数字构成。
before:date 验证此规则的值必须在给定日期之前,日期将通过 PHP 函数 strtotime 传递。
between:min,max 验证此规则的值必须在给定的 min 和 max 之间。字符串、数字以及文件都将使用大小规则进行
比较。
$validator = Validator::make( array('name' => 'Dayle'), array('name' => array('required', 'min:5')) ); 一旦一个 Validator 实例被创建,可以使用 fails (或者 passes)函数执行这个验证。 复制代码 代码如下:
confirmed 验证此规则的值必须和 foo_confirmation 的值相同。比如,需要验证此规则的域是 password,
那么在输入中必须有一个与之相同的 password_confirmation 域。
date 验证此规则的值必须是一个合法的日期,根据 PHP 函数 strtotime。
注意当验证失败,我们使用 withErrors 函数把 Validator 实例传递给 Redirect。这个函数将刷新 Session 中保存的错误消息,使得在下次请求中能够可用。
然而,注意我们没有必要明确的在 GET 路由中绑定错误消息到路由。这是因为 Laravel 总会检查 Session 中的错误,并自动绑定它们到视图如果它们是可用的。所以,对于每个请求,一个 $error s 变量在所有视图中总是可用的,允许您方便的认为 $errors 总是被定义并可以安全使用的。$err ors 变量将是一个 MessageBag 类的实例。
echo $messages->first('email'); 获取一个域的全部错误消息 复制代码 代码如下:
foreach ($messages->get('email') as $message) { // } 获取全部域的全部错误消息 复制代码 代码如下:
foreach ($messages->all() as $message) { // } 检查一个域是否存在消息 复制代码 代码如下:
MIME Types Min Not In Numeric Regular Expression Required Required If Required With Required Without Same Size Unique (Database)
accepted
验证此规则的值必须是 yes、 on 或者是 1。这在验证是否同意"服务条款"的时候非常有用。
仅当指定的域存在的时候,验证此规则的值必须存在。 required_without:foo,bar,...
仅当指定的域不存在的时候,验证此规则的值必须存在。 same:field
验证此规则的值必须与给定域的值相同。 size:value 验证此规则的值的大小必须与给定的 value 相同。对于字符串,value 代表字符的个数;对于数字, value 代表它的整数值,对于文件,value 代表文件以 KB 为单位的大小。 unique: www.hunanwang.netColumn 验证此规则的值必须在给定的数据库的表中唯一。如果 column 没有被指定,将使用该域的名字。
基础验证例子 复制代码 代码如下:
$validator = Validator::make( array('name' => 'Dayle'), array('name' => 'required|min:5') ); 传递给 make 函数的第一个参数是待验证的数据,第二个参数是对该数据需要应用的验证规则。 多个验证规则可以通过 "|" 字符进行隔开,或者作为数组的一个单独的元素。 通过数组指定验证规则 复制代码 代码如下:
有些时候,您可能希望只对一个指定的域指定定制的错误消息: 对一个指定的域指定定制的错误消息 复制代码 代码如下:
$messages = array( 'email.required' => 'We need to know your e-mail address!', );
在一些情况下,您可能希望在一个语言文件中指定错误消息而不是直接传递给 Validator。为了实现 这个目的,请在 app/lang/xx/validation.php 文件中添加您的定制消息到 custom 数组。 在语言文件中指定错误消息
验证此规则的值必须符合给定的正则表达式。
注意: 当使用 regex 模式的时候,有必要使用数组指定规则,而不是管道分隔符,特别是正则 表达式中包含一个管道字符的时候。 required
验证此规则的值必须在输入数据中存在。 required_if:field,value
当指定的域为某个值的时候,验证此规则的值必须存在。 required_with:foo,bar,...
复制代码 代码如下: 'state' => 'exists:states'
指定列名 复制代码 代码如下:
'state' => 'exists:states,abbreviation'
您也可以指定更多的条件,将以 "where" 的形式添加到查询。 复制代码 代码如下:
'email' => 'exists:staff,email,account_id,1' image
$failed = $validator->failed(); 文件验证 Validator 类提供了一些验证规则用于验证文件,比如 size、mimes 等。在验证文件的时候,您可 以和其他验证一样传递给验证器。 附带错误消息 在一个 Validator 实例上调用 messages 函数之后,将会得到一个 MessageBag 实例,该实例拥有 很多处理错误消息的方便的函数。 获取一个域的第一个错误消息 复制代码 代码如下:
验证此规则的值必须是一个合法的 URL。 定制错误消息 如果有需要,您可以使用定制的错误消息代替默认的消息。这里有好几种定制错误消息的方法。 传递定制消息到验证器 复制代码 代码如下:
$messages = array( 'required' => 'The :attribute field is required.', ); $validator = Validator::make($input, $rules, $messages);
Unique 规则的基础使用 复制代码 代码如下:
'email' => 'unique:users' 指定列名 'email' => 'unique:users,email_address' 强制忽略一个给定的 ID 'email' => 'unique:users,email_address,10' url
所以,在跳转之后,您可以在视图中使用自动绑定的 $errors 变量:
复制代码 代码如下:
<?php echo $errors->first('email'); ?>
可用的验证规则
下面是一个所有可用的验证规则的列表以及它们的功能:
复制代码 代码如下:
Accepted Active URL After (Date) Alpha Alpha Dash Alpha Numeric Before (Date) Between Confirmed Date Date Format Different E-Mail Exists (Database) Image (File) In Integer IP Address Max
if ($validator->fails())
{ // The given data did not pass validation }
如果验证失败,您可以从验证器中获取错误消息。 复制代码 代码如下:
$messages = $validator->messages();
您也可以使用 failed 函数得到不带错误消息的没有通过验证的规则的数组。 复制代码 代码如下:
验证此规则的值必须是一个图片 (jpeg, png, bmp 或者 gif)。 in:foo,bar,... 验证此规则的值必须在给定的列表中存在。 integer 验证此规则的值必须是一个整数。
验证此规则的值必须是一个合法的 IP 地址பைடு நூலகம் max:value
验证此规则的值必须小于最大值 value。字符串、数字以及文件都将使用大小规则进行比较。 mimes:foo,bar,... 验证此规则的文件的 MIME 类型必须在给定的列表中。 MIME 规则的基础使用 复制代码 代码如下:
注意: :attribute 占位符将被实际的进行验证的域的名字代替,您也可以在错误消息中使用其他占 位符。
其他验证占位符 复制代码 代码如下:
$messages = array( 'same' => 'The :attribute and :other must match.', 'size' => 'The :attribute must be exactly :size.', 'between' => 'The :attribute must be between :min - :max.', 'in' => 'The :attribute mwww.visa158.com following types: :values', );
foreach ($messages->all('<li>:message</li>') as $message) { // } 错误消息 & 视图 一旦您执行了验证,您需要一种简单的方法向视图反馈错误消息。这在 Lavavel 中能够方便的处理。 以下面的路由作为例子: 复制代码 代码如下:
Route::get('register', function()
{ return View::make('user.register'); }); Route::post('register', function() { $rules = array(...); $validator = Validator::make(Input::all(), $rules); if ($validator->fails()) { return Redirect::to('register')->withErrors($validator); } });
'photo' => 'mimes:jpeg,bmp,png' min:value
验证此规则的值必须大于最小值 value。字符串、数字以及文件都将使用大小规则进行比较。 not_in:foo,bar,...
验证此规则的值必须在给定的列表中不存在。 numeric
验证此规则的值必须是一个数字。 regex:pattern
if ($messages->has('email')) {
// }
以某种格式获取一条错误消息 复制代码 代码如下:
echo $messages->first('email', '<p>:message</p>');
注意: 默认情况下,消息将使用与 Bootstrap 兼容的语法进行格式化。 以某种格式获取所有错误消息 复制代码 代码如下:
active_url
验证此规则的值必须是一个合法的 URL,根据 PHP 函数 checkdnsrr。
after:date
验证此规则的值必须在给定日期之后,日期将通过 PHP 函数 strtotime 传递。
alpha 验证此规则的值必须全部由字母字符构成。
alpha_dash 验证此规则的值必须全部由字母、数字、中划线或下划线字符构成。
date_format:format 验证此规则的值必须符合给定的 format 的格式,根据 PHP 函数 date_parse_from_format。
different:field 验证此规则的值必须与指定的 field 域的值不同。
email 验证此规则的值必须是一个合法的电子邮件地址。
exists:table,column 验证此规则的值必须在指定的数据库的表中存在。 Exists 规则的基础使用
alpha_num 验证此规则的值必须全部由字母和数字构成。
before:date 验证此规则的值必须在给定日期之前,日期将通过 PHP 函数 strtotime 传递。
between:min,max 验证此规则的值必须在给定的 min 和 max 之间。字符串、数字以及文件都将使用大小规则进行
比较。
$validator = Validator::make( array('name' => 'Dayle'), array('name' => array('required', 'min:5')) ); 一旦一个 Validator 实例被创建,可以使用 fails (或者 passes)函数执行这个验证。 复制代码 代码如下:
confirmed 验证此规则的值必须和 foo_confirmation 的值相同。比如,需要验证此规则的域是 password,
那么在输入中必须有一个与之相同的 password_confirmation 域。
date 验证此规则的值必须是一个合法的日期,根据 PHP 函数 strtotime。
注意当验证失败,我们使用 withErrors 函数把 Validator 实例传递给 Redirect。这个函数将刷新 Session 中保存的错误消息,使得在下次请求中能够可用。
然而,注意我们没有必要明确的在 GET 路由中绑定错误消息到路由。这是因为 Laravel 总会检查 Session 中的错误,并自动绑定它们到视图如果它们是可用的。所以,对于每个请求,一个 $error s 变量在所有视图中总是可用的,允许您方便的认为 $errors 总是被定义并可以安全使用的。$err ors 变量将是一个 MessageBag 类的实例。
echo $messages->first('email'); 获取一个域的全部错误消息 复制代码 代码如下:
foreach ($messages->get('email') as $message) { // } 获取全部域的全部错误消息 复制代码 代码如下:
foreach ($messages->all() as $message) { // } 检查一个域是否存在消息 复制代码 代码如下:
MIME Types Min Not In Numeric Regular Expression Required Required If Required With Required Without Same Size Unique (Database)
accepted
验证此规则的值必须是 yes、 on 或者是 1。这在验证是否同意"服务条款"的时候非常有用。
仅当指定的域存在的时候,验证此规则的值必须存在。 required_without:foo,bar,...
仅当指定的域不存在的时候,验证此规则的值必须存在。 same:field
验证此规则的值必须与给定域的值相同。 size:value 验证此规则的值的大小必须与给定的 value 相同。对于字符串,value 代表字符的个数;对于数字, value 代表它的整数值,对于文件,value 代表文件以 KB 为单位的大小。 unique: www.hunanwang.netColumn 验证此规则的值必须在给定的数据库的表中唯一。如果 column 没有被指定,将使用该域的名字。