初心者にもわかるCodeIgniter 其の五【フォームバリデーション】
								フォームを使うにあたり、どうしても必要になるフォームバリデーション。
Jqueryプラグインを利用するのもいいですが、複雑な判別を考えるとCodeIgniter独自のものを利用するのが吉です。
これはそれほど難しくないので、簡単に説明していきます。
送信フォームを作る
まず、バリデーションなしでフォームを作りましょう。
application/views/index.php にフォームを追加
<form class="form-horizontal" method="POST" action="/post/regist/"> <fieldset> <legend>登録フォーム</legend> <div class="form-group"> <label for="inputEmail" class="col-lg-2 control-label">Nmae</label> <div class="col-lg-10"> <input class="form-control" name="name" id="inputName" placeholder="Name" type="text"> </div> </div> <div class="form-group"> <label for="inputEmail" class="col-lg-2 control-label">Email</label> <div class="col-lg-10"> <input class="form-control" name="mail" id="inputEmail" placeholder="Email" type="text"> </div> </div> <div class="form-group"> <label for="inputEmail" class="col-lg-2 control-label">Password</label> <div class="col-lg-10"> <input class="form-control" name="password" id="inputPassword" placeholder="Password" type="password"> </div> </div> <div class="form-group"> <div class="col-lg-10 col-lg-offset-2"> <button type="submit" class="btn btn-primary">送信</button> </div> </div> </fieldset> </form>
次に送信先のコントローラーを設定。
我流ですが、自分はPOST先専用のコントローラーを用意するようにしています。
application/controllers/Post.php を作成
<?php
class Post extends FRONT_Controller {
	public function __construct(){
		parent::__construct();
	}
	//regist
	public function regist(){
		if($this->input->post()){
			
			if ($this->form_validation->run('vali_regist') == FALSE){
				echo validation_errors();
			}else{
				'成功'
			}
			exit;
		}
	}
}
POST先でコントローラーが利くように調整します。
application/config/routes.php に以下を追加
$route['post/(:any)'] = 'post/$1';
form_validationの設定
下準備ができたら以下のページに目を通してください。
フォームバリデーション(検証) — CodeIgniter 3.2.0-dev ドキュメント
基礎的なことは説明しないので、準備するファイルを記述していきます。
application/config/form_validation.php を作成
<?php $config = array( $config = array( //ユーザー登録 'regist' => array( array( 'field' => 'name', 'label' => 'Name', 'rules' => 'required', ), array( 'field' => 'mail', 'label' => 'Mail', 'rules' => 'regist_mail|required|valid_email', ), array( 'field' => 'password', 'label' => 'Password', 'rules' => 'required', ), ), ); ?>
自作ルールを作成します。
今回のフォームはログインID(メールアドレス)の重複を許さないので、その為のルールが必要になります。
application/libraries/MY_Form_validation.php を作成
<?php if ( ! defined('BASEPATH')) exit('No direct scriptaccessallowed');
	class MY_Form_validation extends CI_Form_validation {
	function MY_validation(){
		parent::CI_validation();
	}
	//ユーザー登録時のアドレス重複チェック
	function regist_mail($str) {
		$this->set_message('regist_mail', 'そのメールアドレスは既に利用されています');
		$user = $this->CI->All->getRow('user', array('mail'=>$str));
		if ($user){
			return FALSE;
		}
		return TRUE;
	}
}
以上でフォームバリデーションが動作します。ざっくりですが、こういう事です。
CodeIgniter 日本語化言語ファイル
CodeIgniterでは、フォームバリデーションに限らず、日本語化してほしい箇所が複数あります。
そんな時には日本語化ファイルをアップロードしてしまいましょう。
ダウンロードは以下
GitHub – bcit-ci/codeigniter3-translations
ダウンロードして解凍すると、
codeigniter3-translations-develop > language > japaneseというファイル構成。
japaneseをapplication/language/ にアップロード。
その後、configを調整。
application/config/config.php を編集
$config['language'] = 'japanese';
以上。
バリデーションのエラーを出して、日本語化しているか確認しましょう。
次回にはログイン等をと考えていましたが、それよりも先にAjax通信をやろうと思います。
これも簡単なので、ざっくりと説明できたらと思います。
						