CodeIgniter

CodeIgniterのフォーム・バリデーションクラス/その2

投稿日:

本日は、前回の『CodeIgniterのフォーム・バリデーションクラス』の続きをやりたいと思います。

配列を使った検証ルールの指定

CodeItniterのフォーム・バリデーションクラスは、配列を使った検証ルールを設定することができます。但し、配列のキー名は決まっています。配列のキー名には、第1パラメータ名を『field』、第2パラメータ名を『label』、第3パラメータ名を『rules』に指定しなければなりません。

$this->form_validation->set_rules('yourname','あなたの名前','trim|required|xss_clean');
 $this->form_validation->set_rules('mailto','相手先メアド','trim|required|valid_email|matches[mailconf]|htmlspecialchars');
 $this->form_validation->set_rules('mailconf','確認用メアド','trim|required|htmlspecialchars');
 $this->form_validation->set_rules('subject','件名','','htmlspecialchars');
 $this->form_validation->set_rules('body','内容','trim|required|htmlspecialchars');

前回の上記のコードを配列を使った検証ルールで変更すると下記のようになります。

$config=array(
 array(
 'field'=>'yourname',
 'label'=>'あなたの名前',
 'rules'=>'trim|required|xss_clean'
 ),
 array(
 'field'=>'mailto',
 'label'=>'相手先メアド',
 'rules'=>'trim|required|valid_email|matches[mailconf]|htmlspecialchars'
 ),
 array(
 'field'=>'mailconf',
 'label'=>'確認用メアド',
 'rules'=>'trim|required|htmlspecialchars'
 ),
 array(
 'field'=>'subject',
 'label'=>'件名',
 'rules'=>'htmlspecialchars'
 ),
 array(
 'field'=>'body',
 'label'=>'内容',
 'rules'=>'trim|required|htmlspecialchars'
 ),
 );
$this->form_validation->set_rules($config);

上記のような配列を普通にコントローラの中で使うのは、コードが長くなるばかりであまり意味がないような気がします。配列で利用するためには、検証ルールを設定ファイルに保存し、グループとして呼び出すときに本領を発揮するのではないでしょうか。

検証ルールを設定ファイルに保存

ユーザガイドでも、『フォーム検証クラスの素晴らしい特徴は、アプリケーション全体に適用する検証ルールを全て設定ファイル内に格納する事が出来る点です。』と書いていますが、私もこの機能がフォームバリデーションクラスの最大のメリットだと思います。フォームバリデーションの基本的なパターンは決まっていますし、個人的に特殊な入力フォームがあれば、それをルールとして設定ファイルに保存しておけばいい事だと思います。

それでは設定ファイルを作成してみましょう。文言は若干変更しますが、先程の配列に沿って作成します。

まず、新規ファイルを作成し、『application/config』フォルダ内に、『form_validation.php』という名前でいったん、保存します。保存したファイルに下記のコードを入力後、再度保存します。

<?php
$config = array(
'email' => array(
array(
'field' => 'yourname',
'label' => 'あなたのお名前',
'rules' => 'required|xss_clean'
),
array(
'field' => 'mailto',
'label' => '相手先メールアドレス',
'rules' => 'required|valid_email|htmlspecialchars'
),
array(
'field' => 'mailconf',
'label' => '確認用メールアドレス',
'rules' => 'required|valid_email|htmlspecialchars'
),
array(
'field' => 'subject',
'label' => '件名',
'rules' => 'htmlspecialchars'
),
array(
'field' => 'body',
'label' => 'メール本文',
'rules' => 'required|htmlspecialchars'
)
)
);

それでは、『testmail.php』を再度変更します。

if($this->form_validation->run('emai') == FALSE)

先程の長かったコードがたったこれだけで済みます。

それでは、ブラウザで何も入力せずに送信ボタンを押してみます。下記のように表示されました。

とても便利です。ここまでで満足して力尽きました。本日はここで終了します。

尚、これ以外にも『フィールド名の指定に配列を使う』方法とか、『ルールリファレンス』『関数リファレンス』等の詳細は、いつものように『CodeIgniterユーザガイド日本語版』サイトをご覧下さい。『CodeIgniterユーザガイド日本語版』を編集、作成していただいている皆様いつもありがとうございます。

-CodeIgniter
-

Copyright© WinRoad徒然草 , 2018 All Rights Reserved Powered by AFFINGER5.