質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

2回答

16433閲覧

Laravelのバリデーションで追加のエラーメッセージを出力したい

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2016/04/30 18:23

Laravel5を使用しております。

フォームのバリデーションを、公式ページ参照で以下のソースコードで実装しています。
しかし、①の箇所でdoes existsエラーが発生します。
現在①の条件式の箇所を、コメントアウトし対応しています。
somethingElseIsInvalidというメソッドは$thisで参照しようとしていますが、この場合クラスに含まれるメソッドを参照するのでしょうか??

php

1 $validator = Validator::make($request->all(), [ 2 'Name' => 'required', 3 'Email' => 'required', 4 'Nickname' => 'required', 5 'Sex' => 'required', 6 'Tel' => 'required', 7 'Pref' => 'required', 8 'Address' => 'required' 9 ]); 10 $validator->after(function($validator) { 11 if ($this->somethingElseIsInvalid()) { //① 12 $validator->errors()->add('field', '入力内容に不備があります。'); 13 } 14 }); 15 16 if ($validator->fails()) { 17 return redirect('entry/form')->withErrors($validator)->withInput(); 18 } 19 Session::put('entry',$request->all()); 20 return redirect('entry/confirm');

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

これは恐らく、公式ドキュメントの「バリデーション後のフック」のコピペですよね。
http://readouble.com/laravel/5/1/ja/validation.html

php

1$validator = Validator::make(...); 2 3$validator->after(function($validator) { 4 if ($this->somethingElseIsInvalid()) { 5 $validator->errors()->add('field', 'このフィールドで何か間違いが起こった!'); 6 } 7}); 8 9if ($validator->fails()) { 10 // 11}

ちゃんと読めばわかりますが、これはafterメソッドの説明をするためのコードです。
複数のバリデーションを連続で順番通りに行いたい場合、afterのコールバック内に追加することができますよ、というあくまで例のコードです。somethingElseIsInvalid()というメソッドがLaravelに存在するわけではありません。
この例ではValidator::make(...)で生成したバリデーションのチェック後、自作のメソッドsomethingElseIsInvalid()で更にチェックをしているということです。

somethingElseIsInvalid()は書かれてませんが恐らくこのコードが書かれてるクラス内か親クラスに定義されててtrue/falseを返す何らかのメソッドなのでしょうね。

ドキュメントはコピペするだけでなくしっかり意味を理解した上で利用しましょう。

投稿2016/05/01 02:06

編集2016/05/01 03:15
romiogaku

総合スコア546

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

よくわかりませんが…

PHP

1$validator->after(function($validator) {

ここんとこ、なんか矛盾でないんスかね。

投稿2016/04/30 18:35

takasima20

総合スコア7458

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問