tamulab.jp

tamulabはプログラミングのtipsやインターネット上で気になったことなどを書いてます

FuelPHP でバリデーションエラーが起きたフィールドに入力値を表示する方法

calendar

reload

FuelPHP でバリデーションエラーが起きたフィールドに入力値を表示する方法

FuelPHP の Fieldset クラスを使って入力フィールドを作っているときに、第2引数に Fieldset_Field::validated() を使ってデフォルトの値を表示していたのですが、もしバリデーションエラーになっていたときはこの validated() が返す値が空白になります。そこで、もしバリデーションエラーが起きていたら元々の入力値を返せるようにしてみました。

以下のソースコードには今回の Fieldset_Field クラスとは関係ないところも入ってますが、気にしないでください。

ex1. Fieldset クラスを使って入力フィールドを表示する例
fuel/app/classes/controller/index.php

fuel/app/classes/view/index.php

fuel/app/views/index.php

fuel/app/views/email.php

「test@example.jp」と入力したつもりが「testpexample.jp」と「@」を隣の「p」と入力された場合、valid_email のバリデーションルールでエラーが発生します。

エラーが発生したときに元の入力画面に戻ると入力フィールドのところにはエラーメッセージが表示されますが、その入力した値が消えてしまっていると思います。エンドユーザー的には「入力した内容のどこが悪かったのか」が知りたいとおもいますので、

この行を

とするとバリデーションエラー時には入力した値がデフォルトで入ります。

このようにフィールドが少ない場合ならいいのですが、フィールド数が多くなると面倒じゃないですか?
そこで、バリデーションエラーが発生したときは validated() で入力した値を返すようにしました。

方法としては Fieldset_Field クラスを拡張します。

fuel/app/classes/fieldset/field.php

拡張したクラスを bootstrap.php の Autoloader::add_classes に追加します。

fuel/app/bootstrap.php

これで、view では下記のような表示のままでバリデーションエラー時には入力した値がデフォルトの値になります。

この記事をシェアする

コメントする

関連記事

No Image

[Laravel5] Query Builder を使った時にどんなSQLになるのか知りたい

No Image

[FuelPHP] 配列の値を入れ替える

about

Toru TAMURA

Toru TAMURA

PHP, Ruby などをあやつるWebエンジニアです。Amazon Web Service(AWS)のユーザーグループ JAWS-UG 島根支部所属 [詳細]