글을 작성할 때 아무것도 입력하지 않고 직접 제출하면 오류 메시지 없이 빈 글이 나오는데 이는 잘못된 것입니다. 명령줄에서 php artisan
을 실행하면 새 양식 요청 클래스를 생성하는 make:request
옵션이 표시됩니다. 명령줄에서 실행
<code>php artisan make:request CreateArticleRequest</code>
생성된 파일은 app/http/requests
디렉터리에 있습니다. 파일에서 두 가지 방법을 볼 수 있습니다:
<code> public function authorize() { return false; } public function rules() { return [ // ]; }</code>
authorize
양식을 제출할 때 사용자가 인증된 사용자여야 하는지 여부를 나타냅니다. 인증이 필요하지 않으며 true를 반환합니다. rules
은 규칙 방법입니다. 이 방법을 수정해 보겠습니다.
<code> public function authorize() { //修改为 true,表示不需要认证,或者是通过认证 return true; } public function rules() { return [ 'title' => 'required|min:3', 'body' => 'required', 'published_at' => 'required|date' ]; }</code>
다른 제약 조건에 대해서는 laravel 문서를 확인하세요. 위의 제약조건은 title
는 반드시 3자 이상 입력해야 하며, body
는 필수, published_at
는 필수이고 날짜임을 나타냅니다.
뷰에서 언제든지 $errors
변수에 액세스하여 오류가 있는지 확인하고 뷰를 수정할 수 있습니다.
<code> @if ($errors->any()) <ul class="alert alert-danger"> @foreach($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> @endif {{--使用我们添加的 illuminate\html 开源库--}} {!! Form::open(['url' => 'articles']) !!}</code>
컨트롤러를 수정하고 요청 클래스를 소개합니다.
<code> public function store(Requests\CreateArticleRequest $request) { Article::create($request->all()); return redirect('articles'); }</code>
아무 것도 작성하지 않고 양식을 다시 제출하면 오류 메시지가 표시됩니다.
안내 정보를 중국어로 수정
은 오류 메시지를 영어로 표시합니다. 실제로 laravel은 국제화 문제를 고려하여 config/app.php
및
<code> 'locale' => 'zh',</code>
로캘 언어를 중국어로 설정한 다음 resources/lang
아래에 새 폴더 zh
를 만들고 resources/lang/en/validation.php
파일을 zh
디렉터리에 복사한 후 다음을 수정합니다.
<code> "min" => [ "numeric" => "The :attribute must be at least :min.", "file" => "The :attribute must be at least :min kilobytes.", "string" => ":attribute 至少要包含 :min 字符。", "array" => "The :attribute must have at least :min items.", ], "required" => ":attribute 必须填写。",</code>
다른 내용은 직접 번역할 수 있습니다. 빈 양식을 다시 제출하면 오류 메시지가 중국어로 표시됩니다. 그리고 min:3
의 판단도 한자 3자 이상입니다.
--
Laravel은 validate
메소드를 컨트롤러에 통합합니다. 즉, 요청 클래스를 생성할 필요가 없습니다. 컨트롤러에서 직접 이러한 작업을 완료할 수 있습니다.
컨트롤러 수정:
<code> //注意 Request 的命名空间,不要弄错了 public function store(\Illuminate\Http\Request $request) { $this->validate($request, [ 'title' => 'required|min:3', 'body' => 'required', 'published_at' => 'required|date' ]); Article::create($request->all()); return redirect('articles'); }</code>
결과는 동일하므로 간편인증이 더 빠르게 완료될 수 있습니다.
이상에서는 Laravel 5(11)의 기본 사항인 양식 유효성 검사에 대한 내용을 소개했습니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.