Laravel Laravel-admin PHP プログラミング

【Laravel-admin】バリデーションルールの追加

どうもこんばんは。

突然ですが、先日2月15日、RISING SUN ROCK FESTIVALにてNUMBER GIRLの復活が報じられました。

NUMBER GIRLがオリジナルメンバーで復活!「RISING SUN ROCK FESTIVAL 2019 in EZO」第1弾発表

この復活をリアルタイムで知ることができて本当に嬉しい!興奮する!

でも北海道はちょっと遠い…

もしNUMBER GIRLを聴いたことがない方がいれば是非お勧めです。

本題

前回はリレーション定義を行い、リレーションシップに対応した新規作成や一覧画面などの各操作画面を作成しました。

Laravel-adminのコントローラでは、一対多などのリレーションにあるカラムでであっても、

分かりやすく簡単に画面に表示することが可能でした。

そして、バリデーションについても、Laravel-adminではLaravelのバリデーションを活用しつつ、

コントローラで簡単に実装が可能なようなので、実際に試してみることにしました。

Laravel-adminでのバリデーションについて

Laravel-adminの公式ドキュメントに簡単なデモが掲載されています。

上記ページにも書かれている通り、

LaravelのバリデーションルールをLaravel-adminのコントローラの、

記述ルールにのっとっることで指定したバリデーションルールを適用できる、という流れになります。

基本的にはLaravel標準のバリデーションが使用できるようですが、実際にどこまでのことが出来るのか試してみたいと思います。

とりあえずLaravelで可能なバリデーションルールを用途別に検証していきたいと思います。

基本形

以下のようにLaravelのバリデーションルールをformのrules関数の中に記述すれば使用できます。

requiredはもちろんrequired_ifなど入力条件によって必須項目を流動的に制御するバリデーションも設定可能です。

hasManyのrequired_if

一対多のリレーション以外は先述の方法でバリデーションルールを設定することが可能ですが、
 
hasManyの項目に関してはrequired_ifが同じ方法では動作しません。
 
どうしたもんかと思いましたがこちらのサイトで設定方法を紹介してくれていました!
 
対象のコントローラでupdate()をオーバライドし、Validatorに入力データを渡すことでバリデーションルールを設定することができます。
 

女性のみ趣味欄が入力必須というトンデモ仕様ですが(笑)、こんな感じでhasManyの項目に対してもバリデーションルールを設定することができます。

エラーメッセージの日本語化&カスタマイズ

バリデーションのメッセージのカスタマイズ方法はいくつかありますが、

バリデーション用の言語ファイルで一括管理すると変更も容易です。

config/app.phpの「locale」を「ja」に変更後、resources/lang/ja配下に、

validation.phpを作成するし、バリデーションメッセージを設定することができます。

参考:Laravelのバリデーション

試しにバリデーションメッセージを変更します。

一対一のフォームは以下のようになります。

hasManyのバリデーションは以下です。

以上のようにLaravel-adminのフォームにおいてもLaravel標準のバリデーションを十分に使用することができます!

印象としては、hasManyはちょっとやっかいな気がします。

encore配下をガンガンカスタマイズすればもっと自由度は向上しそうですが、

更新で消えてしまいますからなんとも…

プルリクエストはとてもじゃありませんが勇気ありません(笑)

そもそもフレームワークの拡張の理想の運用ってどんな感じなんでしょうね。

encore配下をapp配下にもってきてガンガンカスタマイズするのが普通なんですかね。

みんなプルリクエストって気軽に送ってたりしてんのかなぁ。

 

-Laravel, Laravel-admin, PHP, プログラミング

Copyright© Life.log , 2020 All Rights Reserved Powered by AFFINGER5.