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

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

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

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Q&A

解決済

2回答

1768閲覧

カスタマイズしたvalidation messageをオーバーライドできない

退会済みユーザー

退会済みユーザー

総合スコア0

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

0グッド

1クリップ

投稿2020/06/02 05:58

Laravelでフォームに入力されたときに場合にバリデーションではじく様にはできたのですが、カスタマイズしたエラーメッセージが表示されず。デフォルトのThe title field is requiredとなってしまいます。

Requests\PostRequest.php

PHP

1namespace App\Http\Requests; 2// ... 3 4public function rules() 5{ 6 return [ 7 'title' => 'required' 8 ]; 9} 10 11public function errors() 12{ 13 return [ 14 'title.required' => 'Plz enter title', 15 ]; 16}
PostsController

PHP

1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6use XXXXXX; 7use App\Http\Requests\AddItemPostRequest; 8 9class PostsController extends Controller 10{ 11 12 public function store(AddItemPostRequest, $request) 13 { 14 $post->title = $request->title; 15 // ... 16 } 17 18 19}

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

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

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

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

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

guest

回答2

0

public function errors()

マニュアルにはメソッド名が messages() と書かれてるので変更したらどうなりますか?

投稿2020/06/02 06:11

kodai

総合スコア759

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

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

0

ベストアンサー

バージョン分からないのでとりあえず6のドキュメントより引用しますが

エラーメッセージのカスタマイズ フォームリクエストにより使用されているメッセージはmessageメソッドをオーバーライドすることによりカスタマイズできます。このメソッドから属性/ルールと対応するエラーメッセージのペアを配列で返してください。 /** * 定義済みバリデーションルールのエラーメッセージ取得 * * @return array */ public function messages() { return [ 'title.required' => 'A title is required', 'body.required' => 'A message is required', ]; } https://readouble.com/laravel/6.x/ja/validation.html

です。
しかしこのファイルに直接書くよりもリソースファイルで対応した方がより良いのではないかと

投稿2020/06/02 06:07

hentaiman

総合スコア6426

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

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

退会済みユーザー

退会済みユーザー

2020/06/02 06:26

viewでは {{ $messages->first('body') }} にするのでしょうか?
退会済みユーザー

退会済みユーザー

2020/06/02 06:31 編集

{{ $erros->first('body') }}でなければいけないと言うことを知ったのですが、$errosは当方で定義していないはずなので未定義だと思います。 なぜ、$errosでとってこれるのでしょうか?もしくは内部的に定義されているのでしょうか?
hentaiman

2020/06/02 06:34

そこまで理解せずに使っても問題無いと思いますが、それは【バリデーションエラー表示】の真下に説明あるので読んでください その説明と少しだけ外れますが、同じ個所に書かれている【MessageBag】については学んでおくと使える事もあるかもしれません 但し必要になった時点でソースを追うなりして学習すれば良い事なので現時点での【MessageBag】の勉強は特に推奨しません
退会済みユーザー

退会済みユーザー

2020/06/02 06:37

了解です。 ありがとございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問