Home > Zend_Validate > Zend Frameworkバリデータの作成

Zend Frameworkバリデータの作成

intro
独自のバリデーションクラスを作成します。ソースコードはこちらからダウンロードできます。

1.バリデーションクラスの作成
以下のようにlibrary/My/Validate/SimpleUrl.phpファイルを作成します。

<?php
require_once 'Zend/Validate/Abstract.php';
require_once 'Zend/Validate/Hostname.php';
class My_Validate_SimpleUrl extends Zend_Validate_Abstract
{
    const MSG_INVALID_URL = 'notValidUrl';
    const MSG_INVALID_HOSTNAME = 'notValidHostname';
 
    const PATTERN_URL =
        '/^(https?:\\/\\/)?([^:\\/]+)(:[1-9][0-9]{0,4})?(\\/.*)?$/';
    const SUBPATTERN_HOSTNAME_INDEX = 2;
 
    protected $_messageVariables = array(
        'hostname' => '_hostname'
    );
 
    protected $_messageTemplates = array(
        self::MSG_INVALID_URL => "'%value%' is not a valid url",
        self::MSG_INVALID_HOSTNAME => "'%hostname%' is not a valid hostname"
    );
 
    protected $_hostname = '';
 
    public function isValid($value)
    {
        $this->_setValue($value);
 
        $valueString = (string) $value;
        $status = @preg_match(self::PATTERN_URL, $valueString, $matches);
        if (!$status) {
            $this->_error(self::MSG_INVALID_URL);
            return false;
        }
 
        $hostname = $matches[self::SUBPATTERN_HOSTNAME_INDEX];
        $this->_hostname = $hostname;
        $option = Zend_Validate_Hostname::ALLOW_DNS |
                  Zend_Validate_Hostname::ALLOW_IP;
        $hostname_validate = new Zend_Validate_Hostname($option);
        $status = $hostname_validate->isValid($hostname);
        if (!$status) {
            $this->_error(self::MSG_INVALID_HOSTNAME);
            return false;
        }
        return true;
    }
}
2.バリデータの追加
以下のようにフォームにバリデータを追加します。

        $form = new Zend_Form();
        $form->addElementPrefixPath('My_Validate', 'My/Validate/',
                                    Zend_Form_Element::VALIDATE)
             ->setAction($this->_request->getBaseUrl() . '/index/profile')
             ->setMethod('post');
        //...
        $url = $form->createElement('text', 'url');
        $url->setLabel('URL')
            //...
            ->addValidator('simpleUrl', false);
        //...

または以下のように要素にバリデータを追加することもできます。

        $url->addPrefixPath('My_Validate', 'My/Validate/',
                               Zend_Form_Element::VALIDATE)

3.確認
Webサーバにアクセスし、作成したバリデーションが実施されていることを確認してください。

Comments:0

Comment Form
Remember personal info

Trackbacks:1

Trackback URL for this entry
http://www.oplabo.jp/article/13/trackback
Listed below are links to weblogs that reference
Zend Frameworkバリデータの作成 from Open Programming Laboratory
trackback from 携帯サイトをつくろう。 09-02-13 (金) 10:35

携帯サイト制作には欠かせないデータ入力チェック『Zend Validate』の派生クラスを公開します

Zend Frameworkにはフォームからの入力内容をチェック出来るZend Validateがありますが
標準で用意されているものは数が少なく不十分です。
標準に無いものでよく使われるであろう入力チェッ…

Home > Zend_Validate > Zend Frameworkバリデータの作成

English
Search
Feeds

Return to page top