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

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

投稿日:2019年2月11日 更新日:

どうもこんばんは。

突然ですが、先日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, プログラミング

関連記事

仮想環境簡単設定ツール「Vagrant」のインストール

どうもこんばんは。 以前【WordPress】WordPressをDockerToolboxを使用して構築する方法にて、Wordpressをdockerコンテナ上で構築しました。 今回は最近よく触って …

【Laravel】Laravel&Laravel-adminでの論理削除 ~ORMとDBファサード~

Laravelでは論理削除を行う機能が備わっています。 論理削除と物理削除に関しては以下に詳しく紹介されています。 参考:論理削除と物理削除とは データを削除したいけれど、後々データの復元を行う可能性 …

【Laravel-admin】Laravel-adminで新規テーブルを作成しCRUD画面を追加する方法

前回【Laravel-admin】PHPのライブラリ「Laravel-admin」のインストール方法でPHPのフレームワーク「Laravel」と管理画面用のパッケージである「Laravel-admin …

【VirtualBox+Vagrant】VirtualBox+Vagrantで仮想環境を構築する

前回、仮想環境簡単設定ツール「Vagrant」のインストールで仮想環境設定自動化ツール「Vagarant」のインストールを行いました。 Vagrantを使用すれば、VirtualBox上に作成する仮想 …

エンジニア転職記 –在職中に使用したサービス–

プログラミング転職記とか114514番煎じネタだと思うけど技術ネタは投稿までが時間がかかるので、自分の体験でも書きたいと思います。 今、プログラミングブームだとよく感じます。テレビでもネットでもAIや …