2016/02/01FuelPHPのValidationクラスを使ってフォームの項目チェックを実装します例えば、フォームで入力された「ユーザ名」の入力必須をチェックします。value="">「投稿する」などsubmitボタン押下時に、コントローラ内でValidationを実行します。上記のHTMLからポストされた「ユーザ名」の必須チェックを行う場合、以下のように記述します。入力エラー}関数「add」の第1引数に要素名、第2引数に要素のラベルを設定します。ラベルはエラーメッセージの表示の際などに利用されます。「add_rule」に「required」を設定することで必須チェックをします。「run」でValidationを実行し、入力内容に問題がなければtrueが返されます。この判定で、DBへのデータの入出力や、どのviewで画面を表示するかなどの処理を分岐させることができます。その他にも、「max_length」で最大文字数チェック、「valid_email」で有効メールアドレスチェックなど、デフォルトで基本的なバリデーションルールが用意されています。複数のチェックを適用するためには、数珠つなぎでルールを設定します。16);エラーメッセージを制御する「$val->run()」でfalseだった場合に、「$val->error()」でエラーメッセージを取得することができます。エラーの際にはこれをビューに渡して、エラーメッセージを画面に表示させればよいのです。上記の例で、必須チェックエラーの場合、以下のように配列で格納されます。"「ユーザ名」は必須入力です。")さて、本家のFuelPHPでは日本語のエラーメッセージは用意されていません。エラーメッセージについては、ファイル「/fuel/app/lang/ja/validation.php」で設定することができます。以下のようにValidationルールごとにメッセージを設定できます。'「:label」は必須入力です。文字以上で入力して下さい。文字以下で入力して下さい。',(略)「:label」の部分が関数「add」で設定したラベル名、「:param:1」部分が関数「add_rule」の第2引数以降で設定した値に置き換わり、エラーメッセージとしてセットされます。独自のバリデーションルールを設定する先ほども述べたように、本家のFuelPHPは日本語が用意されていないため「半角/全角チェック」などのValicationルールがありません。そこで独自で作成してみます。任意のクラス「fuel/app/classes/myvalidation.php」を用意します。false;}}}上記は文字列が半角かどうかチェックするルールです。関数名「_validation_onebyte」の「_validation_」は固定で、「onebyte」は任意のValidationルール名となります。これを先ほどのユーザ名にチェックに適用するためには、以下のように記述します。'ユーザ名')->add_rule('required')->add_rule('onebyte');関数「add_callable」で、追加するValidationルールのクラス名を指定します。先ほどと同様に、エラーメッセージもルール名を指定して設定できます。'「:label」は半角で入力してください。',クラスMyValidation内でモデルをロードすれば、DBにINSERTする際のレコード重複チェックなどもできます。以上、Validationクラスの基本的な使い方です。うまく使えば、チェック処理をきれいに整理することができると思います。Validationクラスを継承しているFieldsetクラスを使えば、ビューへのフォームやエラーメッセージのHTML出力を自動化できますが、レイアウトの自由度が低くなるので、個人的にはあまり好きではありません。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。inc.Profileサイト「helog」は私がWeb制作に携わるなかでの経験を中心に記しています。前にも発生したんだよなぁ。」といった無駄な時間を省くことを目的に書き始めました。「へ」の「ログ」です。個人的な技術メモのようなものですが、みなさんの何か役に立つことがあればこの上ないです。