> php教程 > PHP开发 > 본문

Laravel 프레임워크 양식 유효성 검사 자세한 설명

高洛峰
풀어 주다: 2016-12-27 10:55:33
원래의
1304명이 탐색했습니다.

기본 검증 예시

$validator = Validator::make(
array('name' => 'Dayle'),
array('name' => 'required|min:5')
);
로그인 후 복사

make 함수에 전달되는 첫 번째 매개변수는 검증할 데이터이고, 두 번째 매개변수는 데이터에 적용해야 하는 검증 규칙입니다.

여러 유효성 검사 규칙은 "|" 문자로 구분하거나 배열의 단일 요소로 구분할 수 있습니다.

배열을 통해 유효성 검사 규칙 지정

$validator = Validator::make(
array('name' => 'Dayle'),
array('name' => array('required', 'min:5'))
);
로그인 후 복사

Validator 인스턴스가 생성되면 실패(또는 통과) 기능을 사용하여 이 유효성 검사를 수행할 수 있습니다.

if ($validator->fails())
{
// The given data did not pass validation
}
로그인 후 복사

검증에 실패하면 검증기에서 오류 메시지를 받을 수 있습니다.

$messages = $validator->messages();
로그인 후 복사

failed 함수를 사용하면 오류 메시지 없이 유효성 검사에 실패한 규칙 배열을 가져올 수도 있습니다.

$failed = $validator->failed();
로그인 후 복사

파일 유효성 검사

Validator 클래스는 크기, MIME 등과 같은 파일 유효성을 검사하기 위한 몇 가지 유효성 검사 규칙을 제공합니다. 파일의 유효성을 검사할 때 다른 유효성 검사와 마찬가지로 유효성 검사기에 파일을 전달할 수 있습니다.

오류 메시지 포함

Validator 인스턴스에서 메시지 기능을 호출하면 오류 메시지 처리를 위한 편리한 기능이 많이 포함된 MessageBag 인스턴스가 생성됩니다.

도메인에 대한 첫 번째 오류 메시지 가져오기

echo $messages->first('email');
로그인 후 복사

도메인에 대한 모든 오류 메시지 가져오기

foreach ($messages->get('email') as $message)
{
//
}
로그인 후 복사

모든 도메인에 대한 모든 오류 메시지 가져오기

foreach ($messages->all() as $message)
{
//
}
로그인 후 복사

도메인에 대한 메시지가 있는지 확인

if ($messages->has('email'))
{
//
}
로그인 후 복사

특정 형식의 오류 메시지 받기

echo $messages->first(&#39;email&#39;, &#39;<p>:message</p>&#39;);
로그인 후 복사

참고: 기본적으로 메시지는 호환되는 형식으로 사용됩니다. 형식화를 위한 부트스트랩 구문을 사용합니다.

특정 형식으로 모든 오류 메시지 가져오기

  foreach ($messages->all(&#39;<li>:message</li>&#39;) as $message)
  {
  //
  }
로그인 후 복사

오류 메시지 및 보기

검증을 수행한 후에는 오류를 보기에 다시 보고할 수 있는 쉬운 방법이 필요합니다. 정보. 이는 Lavavel에서 쉽게 처리할 수 있습니다. 다음 경로를 예로 들어 보겠습니다.

Route::get(&#39;register&#39;, function()
{
return View::make(&#39;user.register&#39;);
});
Route::post(&#39;register&#39;, function()
{
$rules = array(...);
$validator = Validator::make(Input::all(), $rules);
if ($validator->fails())
{
return Redirect::to(&#39;register&#39;)->withErrors($validator);
}
});
로그인 후 복사

검증이 실패하면 withErrors 함수를 사용하여 Validator 인스턴스를 Redirect에 전달합니다. 이 함수는 세션에 저장된 오류 메시지를 새로 고쳐 다음 요청 시 사용할 수 있도록 합니다.


그러나 GET 경로의 경로에 오류 메시지를 명시적으로 바인딩할 필요는 없습니다. 이는 Laravel이 항상 세션에 오류가 있는지 확인하고 오류가 있으면 자동으로 뷰에 바인딩하기 때문입니다. 따라서 모든 요청에 ​​대해 $errors 변수는 항상 모든 보기에서 사용할 수 있으므로 $errors가 항상 정의되어 사용하기에 안전하다고 편리하게 가정할 수 있습니다. $errors 변수는 MessageBag 클래스의 인스턴스가 됩니다.

따라서 점프 후 뷰에서 자동으로 바인딩된 $errors 변수를 사용할 수 있습니다.

<?php echo $errors->first(&#39;email&#39;); ?>
로그인 후 복사

사용 가능한 유효성 검사 규칙

다음은 사용 가능한 모든 목록입니다. 유효성 검사 규칙 및 해당 기능:

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
 MIME Types
 Min
 Not In
 Numeric
 Regular Expression
 Required
 Required If
 Required With
 Required Without
 Same
 Size
 Unique (Database)
로그인 후 복사

accepted

유효성 검사 이 규칙의 값은 yes, on 또는 1이어야 합니다. 이는 서비스 약관에 대한 동의 여부를 확인할 때 유용합니다.

active_url

PHP 함수 checkdnsrr에 따라 이 규칙의 값이 유효한 URL이어야 하는지 확인합니다.

after:date

이 규칙의 값이 PHP 함수 strtotime을 통해 전달되는 지정된 날짜 이후여야 하는지 확인합니다.

alpha
이 규칙의 값이 모두 알파벳 문자로 구성되어야 하는지 확인합니다.

alpha_dash
이 규칙의 값이 문자, 숫자, 대시 또는 밑줄 문자로만 구성되어야 하는지 확인합니다.

alpha_num
이 규칙을 검증하는 값은 문자와 숫자로만 구성되어야 합니다.

before:date
이 규칙의 값이 지정된 날짜 이전이어야 하는지 확인하고 날짜는 PHP 함수 strtotime을 통해 전달됩니다.

between:min,max
  이 규칙의 값이 지정된 최소값과 최대값 사이에 있어야 하는지 확인합니다. 문자열, 숫자, 파일은 크기 규칙을 사용하여 비교됩니다.

confirmed
이 유효성 검사 규칙의 값은 foo_confirmation의 값과 동일해야 합니다. 예를 들어, 이 규칙에 대해 유효성을 검사해야 하는 필드가 비밀번호인 경우 입력에 동일한 비밀번호_확인 필드가 있어야 합니다.

date
PHP 함수 strtotime에 따라 이 규칙의 값이 유효한 날짜인지 확인합니다.

date_format:format
이 규칙의 값이 PHP 함수 date_parse_from_format에 따라 지정된 형식의 형식을 준수해야 하는지 확인합니다.

다른:필드
  이 규칙의 값이 지정된 필드의 값과 달라야 하는지 확인합니다.

이메일
이 규칙의 값이 유효한 이메일 주소인지 확인하세요.

exists:table,column
이 규칙의 값이 지정된 데이터베이스의 테이블에 존재해야 하는지 확인하세요.

Exists 규칙의 기본은

&#39;state&#39; => &#39;exists:states&#39;
로그인 후 복사

열 이름 지정

&#39;state&#39; => &#39;exists:states,abbreviation&#39;
로그인 후 복사

을 사용하는 것입니다. 또한 더 많은 조건을 지정할 수도 있습니다. "어디" 쿼리 형식입니다.

&#39;email&#39; => &#39;exists:staff,email,account_id,1&#39;
로그인 후 복사

image
이 규칙을 확인하는 값은 이미지(jpeg, png, bmp 또는 gif)여야 합니다.

in:foo,bar,...

이 규칙의 값이 지정된 목록에 있어야 하는지 확인합니다.

정수

이 규칙의 값이 정수여야 하는지 확인합니다.


이 규칙의 값이 유효한 IP 주소여야 하는지 확인하세요.

max:value

  이 규칙의 값이 최대값보다 작아야 하는지 확인합니다. 문자열, 숫자, 파일은 크기 규칙을 사용하여 비교됩니다.

Mimes:foo,bar,...

이 규칙의 유효성을 검사할 파일의 MIME 유형이 지정된 목록에 있어야 합니다.

  MIME 规则的基础使用

&#39;photo&#39; => &#39;mimes:jpeg,bmp,png&#39;
로그인 후 복사

min:value
  验证此规则的值必须大于最小值 value。字符串、数字以及文件都将使用大小规则进行比较。

not_in:foo,bar,...

  验证此规则的值必须在给定的列表中不存在。

numeric

  验证此规则的值必须是一个数字。

regex:pattern

  验证此规则的值必须符合给定的正则表达式。

  注意: 当使用 regex 模式的时候,有必要使用数组指定规则,而不是管道分隔符,特别是正则表达式中包含一个管道字符的时候。

required

  验证此规则的值必须在输入数据中存在。

required_if:field,value

  当指定的域为某个值的时候,验证此规则的值必须存在。

required_with:foo,bar,...

  仅当指定的域存在的时候,验证此规则的值必须存在。

required_without:foo,bar,...

  仅当指定的域不存在的时候,验证此规则的值必须存在。

same:field

  验证此规则的值必须与给定域的值相同。

size:value

验证此规则的值的大小必须与给定的 value 相同。对于字符串,value 代表字符的个数;对于数字,value 代表它的整数值,对于文件,value 代表文件以KB为单位的大小。

unique:table,column,except,idColumn

验证此规则的值必须在给定的数据库的表中唯一。如果 column 没有被指定,将使用该域的名字。

Unique 规则的基础使用

&#39;email&#39; => &#39;unique:users&#39;
指定列名
&#39;email&#39; => &#39;unique:users,email_address&#39;
强制忽略一个给定的 ID
&#39;email&#39; => &#39;unique:users,email_address,10&#39;
로그인 후 복사

url

  验证此规则的值必须是一个合法的 URL。

  定制错误消息

  如果有需要,您可以使用定制的错误消息代替默认的消息。这里有好几种定制错误消息的方法。

  传递定制消息到验证器

$messages = array(
 &#39;required&#39; => &#39;The :attribute field is required.&#39;,
 );
 $validator = Validator::make($input, $rules, $messages);
로그인 후 복사

注意: :attribute 占位符将被实际的进行验证的域的名字代替,您也可以在错误消息中使用其他占位符。

其他验证占位符

  $messages = array(
  &#39;same&#39; => &#39;The :attribute and :other must match.&#39;,
  &#39;size&#39; => &#39;The :attribute must be exactly :size.&#39;,
  &#39;between&#39; => &#39;The :attribute must be between :min - :max.&#39;,
  &#39;in&#39; => &#39;The :attribute must be one of the following types: 
:values&#39;,
  );
로그인 후 복사

  有些时候,您可能希望只对一个指定的域指定定制的错误消息:

  对一个指定的域指定定制的错误消息

$messages = array(
&#39;email.required&#39; => &#39;We need to know your e-mail address!&#39;,
);
로그인 후 복사

在一些情况下,您可能希望在一个语言文件中指定错误消息而不是直接传递给 Validator。为了实现这个目的,请在 app/lang/xx/validation.php 文件中添加您的定制消息到 custom 数组。

在语言文件中指定错误消息

&#39;custom&#39; => array(
&#39;email&#39; => array(
&#39;required&#39; => &#39;We need to know your e-mail address!&#39;,
),
),
로그인 후 복사

定制验证规则

Laravel 提供了一系列的有用的验证规则;但是,您可能希望添加自己的验证规则。其中一种方法是使用 Validator::extend 函数注册定制的验证规则:

注册一个定制的验证规则

Validator::extend(&#39;foo&#39;, function($attribute, $value, $parameters)
{
return $value == &#39;foo&#39;;
});
로그인 후 복사

注意: 传递给 extend 函数的规则的名字必须符合 "snake cased" 命名规则。

  定制的验证器接受三个参数:待验证属性的名字、待验证属性的值以及传递给这个规则的参数。

  您也可以传递一个类的函数到 extend 函数,而不是使用闭包:

  Validator::extend(&#39;foo&#39;, &#39;FooValidator@validate&#39;);
로그인 후 복사

  注意您需要为您的定制规则定义错误消息。您既可以使用一个行内的定制消息数组,也可以在验证语言文件中进行添加。

  您也可以扩展 Validator 类本身,而不是使用闭包回调扩展验证器。为了实现这个目的,添加一个继承自 Illuminate\Validation\Validator 的验证器类。您可以添加在类中添加以 validate 开头的验证函数:

扩展验证器类

<?php
class CustomValidator extends Illuminate\Validation\Validator {
public function validateFoo($attribute, $value, $parameters)
{
return $value == &#39;foo&#39;;
}
}
로그인 후 복사

下面,您需要注册定制的验证器扩展:

您需要注册定制的验证器扩展

Validator::resolver(function($translator, $data, $rules, $messages)
{
return new CustomValidator($translator, $data, $rules, $messages);
});
로그인 후 복사

  当创建一个定制的验证规则,您有时需要为错误消息定义一个定制的占位符。为了实现它,您可以像上面那样创建一个定制的验证器,并且在验证器中添加一个 replaceXXX 函数:

protected function replaceFoo($message, $attribute, $rule, $parameters)
{
return str_replace(&#39;:foo&#39;, $parameters[0], $message);
}
로그인 후 복사

更多Laravel框架表单验证详解相关文章请关注PHP中文网!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿