自分なりの目線で情報を発信します。			
		×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
	Zend_Validateを使って入力チェックを行うサンプルです。
	Zend Frameworkリファレンス (Zend_Validate)
	■使用ファイル
- testform.phtml 名前などの情報を入力して送信するフォーム
- success.phtml 送信成功を伝える画面
- testformController.php フォームデータを処理するコントローラー
	■メッセージ日本語化
	Zend_Validateはデフォルトで日本語に対応していないので、
	エラーメッセージを日本語化してしまいましょう。
	この処理は常に行うため、Bootstrap.phpに日本語化処理を書きます。
	※Bootstrapクラスに"_init"で始まるメソッドを追加するとフレームワークから実行されます。
	  これを初期化処理として利用できます。
	Bootstrapについて詳しくはこちらを。参考にさせていただきました。
	□application/Bootstrap.phpの中
- 
			protected function _initLang()
- 
			{
- 
			// Zend_Validateのメッセージ日本語化
- 
			// 言語ファイルのロード
- 
			$translator = new Zend_Translate(
- 
			// Arrayアダプタを使って言語定義を取得
- 
			'array',
- 
			// 言語リソースのパス
- 
			// 日本語ロケール
- 
			'ja',
- 
			// ファイル指定
- 
			);
- 
			// デフォルトのトランスレータを設定
- 
			Zend_Validate_Abstract::setDefaultTranslator($translator);
- 
			}
	当方のZendFrameworkバージョンは、1.11.11です。
	このバージョンであれば、Zend_Validateの日本語化ファイルが同梱されていました。(library/languages/ja/Zend_Validate.php)
	古いバージョンの場合は、日本語化ファイルを他からもらってくる必要があります。
	新しいバージョン(例えばこの1.11.11)の日本語化ファイルを使えば、
	古いバージョンでも、たぶん日本語化できる気がします。
■文字列長チェック
		Zend_Validateは文字列チェックの際、iconv.internal_encodingを使用します。
デフォルトのままだと'ISO-8859-1'であるため、文字列の長さを正しく判定できない可能性があります。
環境に合った適切なエンコーディングを指定しましょう。
	デフォルトのままだと'ISO-8859-1'であるため、文字列の長さを正しく判定できない可能性があります。
環境に合った適切なエンコーディングを指定しましょう。
		エンコーディング指定処理を、Bootstrap.phpに書きます。
	
		□application/Bootstrap.phpの中
	- 
			protected function _initEncoding()
- 
			{
- 
			}
	■testform.phtml
- 
			<html>
- 
			<head>
- 
			<title>テストフォーム</title>
- 
			</head>
- 
			<body>
- 
			<h1>テストフォーム</h1>
- 
			<?php foreach ($this->errmsgList as $errmsg): ?>
- 
			<p><?php echo $errmsg; ?></p>
- 
			<?php endforeach; ?>
- 
			<form action="/testform/insert" method="post">
- 
			<table class="inqform_customer" summary="問い合わせ内容">
- 
			<thead></thead><tfoot></tfoot>
- 
			<tbody>
- 
			<tr>
- 
			<th>名前</th>
- 
			<td>
- 
			<input type="text" name="name" id="name" value="<?php echo $this->input['name']; ?>">
- 
			</td>
- 
			</tr>
- 
			<tr>
- 
			<th>メールアドレス</th>
- 
			<td>
- 
			<input type="text" name="email" id="email" value="<?php echo $this->input['email']; ?>">
- 
			</td>
- 
			</tr>
- 
			<tr>
- 
			<th>電話番号</th>
- 
			<td>
- 
			<input type="text" name="telno" id="telno" value="<?php echo $this->input['telno']; ?>">
- 
			</td>
- 
			</tr>
- 
			</tbody>
- 
			</table>
- 
			<input type="submit" value="送信">
- 
			</form>
- 
			</body>
- 
			</html>
	名前などの情報を入力して送信するフォームです。
	ここで入力された内容をtestformController.phpに送ります。
	バリデーションエラーがあれば表示します。
	■success.phtml
- 
			<html>
- 
			<head>
- 
			<title>送信完了</title>
- 
			</head>
- 
			<body>
- 
			<h1>送信完了</h1>
- 
			<p>送信完了しました。</p>
- 
			</body>
- 
			</html>
	入力エラーがなく、送信成功を伝える画面です。
	■testformController.php
- 
			<?php
- 
			
- 
			class TestformController extends Zend_Controller_Action
- 
			{
- 
			
- 
			// 問い合わせ内容登録
- 
			public function indexAction()
- 
			{
- 
			$this->view->assign('errmsgList', $this->errmsgList);
- 
			$this->view->assign('input', $input);
- 
			$this->renderScript('testform/testform.phtml');
- 
			}
- 
			
- 
			// 問い合わせ内容登録
- 
			public function insertAction()
- 
			{
- 
			// リクエストパラメータ
- 
			$input['name'] = $this->getRequest()->getParam('name');
- 
			$input['email'] = $this->getRequest()->getParam('email');
- 
			$input['telno'] = $this->getRequest()->getParam('telno');
- 
			
- 
			if ($this->validate($input) === FALSE) {
- 
			// 入力チェックエラー →エラー内容を通知
- 
			$this->view->assign('errmsgList', $this->errmsgList);
- 
			$this->view->assign('input', $input);
- 
			$this->renderScript('testform/testform.phtml');
- 
			return;
- 
			}
- 
			
- 
			$this->renderScript('testform/success.phtml');
- 
			}
- 
			
- 
			// 入力値のバリデーション成否を返す
- 
			private function validate($data)
- 
			{
- 
			
- 
			$validator = new Zend_Validate();
- 
			->addValidator(new Zend_Validate_NotEmpty());
- 
			if ($validator->isValid($data['name']) === FALSE) {
- 
			foreach ($validator->getMessages() as $msgId => $msg) {
- 
			$errmsg[] = $msg;
- 
			}
- 
			}
- 
			
- 
			$validator = new Zend_Validate();
- 
			->addValidator(new Zend_Validate_NotEmpty())
- 
			->addValidator(new Zend_Validate_EmailAddress());
- 
			if ($validator->isValid($data['email']) === FALSE) {
- 
			foreach ($validator->getMessages() as $msgId => $msg) {
- 
			$errmsg[] = $msg;
- 
			}
- 
			}
- 
			
- 
			$validator = new Zend_Validate();
- 
			->addValidator(new Zend_Validate_NotEmpty())
- 
			->addValidator(new Zend_Validate_Digits());
- 
			if ($validator->isValid($data['telno']) === FALSE) {
- 
			foreach ($validator->getMessages() as $msgId => $msg) {
- 
			$errmsg[] = $msg;
- 
			}
- 
			}
- 
			
- 
			$this->errmsgList = $errmsg;
- 
			return FALSE;
- 
			}
- 
			
- 
			return TRUE;
- 
			}
- 
			}
- 
			
- 
			// end of file
	バリデーションチェックには、以下クラスを使っています。
	Zend_Validate_StringLength(文字列長チェック)
	Zend_Validate_NotEmpty(必須チェック)
	Zend_Validate_EmailAddress(メールアドレス形式チェック)
	Zend_Validate_Digits(数字チェック)
	バリデーションクラスについては、詳しくはこちらをどうぞ。
	□各項目のバリデーションルール
	 <名前>
- 最大128文字
- 必須
- 
			->addValidator(new Zend_Validate_NotEmpty());
	 <メールアドレス>
- 最大320文字
- 必須
- メールアドレス形式
- 
			->addValidator(new Zend_Validate_NotEmpty())
- 
			->addValidator(new Zend_Validate_EmailAddress());
	 <電話番号>
- 最大11文字
- 必須
- 数字のみ
- 
			->addValidator(new Zend_Validate_NotEmpty())
- 
			->addValidator(new Zend_Validate_Digits());
PR
					
					お知らせ				
				
					最新記事				
				(03/11)
(02/23)
(01/08)
(12/28)
(11/18)
				
					カテゴリー				
				
					プロフィール				
				
HN:
	
shusatoo
性別:
	
男性
自己紹介:
	
				基本PHP。JavaScriptちょっとだけ。Javaをほんの少し。
					最新トラックバック				
				
					カレンダー				
				| 09 | 2025/10 | 11 | 
| S | M | T | W | T | F | S | 
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 | 
| 12 | 13 | 14 | 15 | 16 | 17 | 18 | 
| 19 | 20 | 21 | 22 | 23 | 24 | 25 | 
| 26 | 27 | 28 | 29 | 30 | 31 | 
					ブログ内検索				
				
					最古記事				
				(09/18)
(09/23)
(10/01)
(10/09)
(10/10)
				
					カウンター				
				
					アク解アナライズ				
				
					ビジター				
				