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

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

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

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

Laravel 5

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

Q&A

解決済

2回答

3098閲覧

FormRequest使用時にattributesとmessagesを同時に使用するには

Auxo

総合スコア34

PHP

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

Laravel 5

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

0グッド

0クリップ

投稿2017/01/05 02:05

編集2017/01/05 02:36

Laravel5.1を使用しております。

FormRequestにてバリデーションを行っており、その際、attributesにてフォーム要素の名称を設定してエラーメッセージ上の表示を調整しております。

カスタムバリデーションルールを作成した際、標準のmessageだけでは対応できなった事から、FormRequestにてmessagesを実装し、該当のルールに対応するメッセージを作成しました。

しかし、messageを設定するとattributesで指定している項目名が置き換わらず、この両者を同時に指定する事ができません。

また、例えば以下のようにmessagesにてattributesで指定した名称を利用しようとしても反映されません。

php

1 public function attributes() { 2 return [ 3 'item1' => 'アイテム1', 4 'item2' => 'アイテム2', 5 'item3' => 'アイテム3', 6 ]; 7 } 8 9 public function messages() { 10 return [ 11 'item2.customCheck' => ':attributeを正しく入力してください。', 12 ]; 13 } 14

上記の場合、「item2を正しく入力してください。」とメッセージは生成されます。

messagesを使用するとattributesは無視されているように思えます。

カスタムバリデーションルールを作成しており、そのメッセージが登録できないことからやむを得ずmessagesで対応しようとしております。

一応lang/ja/validation.php内に追加(「'customCheck' => ':attributeを正しく入力してください。'」)しましたが、こちらも反映されませんでした。

attributesとmessagesを同時に利用したいのですが、どのようにすればよいでしょうか。

追加情報

状況として少し整理できました。
まず、カスタムバリデーションを実装していない場合、messagesとattributesは普通に利用できるようです。
カスタムバリデーションを利用するとそもそも何れも指定できなくなりました。

カスタムバリデーションの実装方法は以下のサイトを参考にしているのですが、何か私の見落としがあるのかもしれません。

Laravel4, 5 カスタムバリデートの実装

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

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

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

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

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

guest

回答2

0

自己解決

再度整理して実装し直したところ正常に動作しました。
お騒がせしました。

投稿2017/03/10 00:56

Auxo

総合スコア34

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

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

0

\lang\ja\validation.php
そのファイル内にattributesを記述してみては如何でしょうか?

php

1'attributes' => [ 2 'item1' => 'アイテム1', 3 'item2' => 'アイテム2', 4 'item3' => 'アイテム3', 5]

投稿2017/01/05 02:23

編集2017/01/05 02:28
motuo

総合スコア3027

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

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

Auxo

2017/01/05 02:37

回答ありがとうございます。 追加情報として追記したのですが、そもそもカスタムバリデーションを実装するとFormRequestに記述したattributesやmessagesが無視されているようです。 私の実装の方法が悪いのか、それともそういった仕様なのか現状特定できておりません。
motuo

2017/01/05 02:56

なるほど…アドバイスできるか分かりませんが、FormRequestとカスタムバリデータのソースも提示して貰えますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問