2011-06-22 11 views
0

問題を発行:名「スパム」でZendのフォームのカスタム検証パスは

プラグインは レジストリに見つかりませんでした。使用するパス: Zend_Validate_:Zendの/検証/

私は私のbootstrap.phpのファイル(それはクラスではありません)上でこれを持っている:

include_once 'config_root.php'; 
set_include_path ($PATH); 

require_once 'Initializer.php'; 
require_once "Zend/Loader.php"; 
require_once 'Zend/Loader/Autoloader.php'; 

// Set up autoload. 
$loader = Zend_Loader_Autoloader::getInstance(); 
$loader->setFallbackAutoloader (true); 
$loader->suppressNotFoundWarnings (false); 

//resource Loader 
$resourceLoader = new Zend_Loader_Autoloader_Resource(array(
       'basePath' => APPLICATION_PATH, 
       'namespace' => '', 
      )); 

$resourceLoader->addResourceType('validate', 'validators/', 'My_Validate_'); 

$loader->pushAutoloader($resourceLoader); 

私はSpam.phpなどと呼ばファイルを命名しましたこの:オン

アプリケーション/バリ/ Spam.php

class My_Validate_Spam extends Zend_Validate_Abstract { 

私が持っているフォームクラス:すべてこれにより

//HONEY POT 
     $this->addElement(
       'text', 'honeypot', array(
        'label' => 'Honeypot', 
        'required' => false, 
        'class' => 'honeypot', 
        'decorators' => array('ViewHelper'), 
        'validators' => array(
         array(
          'validate' => 'Spam' 
         ) 
        ) 
       ) 
     ); 

、私は取得しています:名「スパム」で

プラグインは レジストリに見つかりませんでした。使用パス: Zend_Validate_:Zend/Validate/

なぜですか?

ありがとうございます。

答えて

0

フォーム要素のプレフィックスパスにカスタムバリデータを持つディレクトリを追加する必要があります。例:

$elementPrefixPaths = 
    array(
     array(
      array(
       'prefix' => 'My_Validate_', 
       'path' => 'My/Validate', // 'application/validators' in your case 
       'type' => 'validate', 
      ) 
     ) 
    ); 
$form->addElementPrefixPaths($elementPrefixPaths); 
// or, if your're inside the form, 
// $this->addElementPrefixPaths($elementPrefixPaths) 
// before any elements make use of the validator. 

「パス」はインクルードパスに含める必要があります。カスタムフィルタでも同じことをする必要があります。カスタムデコレータと要素(代わりにsetPrefixPaths()メソッドを使用する)にも同様のアプローチがあります。

続きを読むhere

あなたのパスは「アプリケーション/バリデータ」ですが、クラスの命名とパスミラーリングについてはZF規約に従う方がよいでしょう。 Validatorを 'My/Validate'のようなディレクトリに置く必要があります。開発したすべてのカスタムZF拡張(フィルタ、ヘルパー、プラグインなど)に対してこの規約に従ってください。長期的にはあなたの人生を楽にします。また、最終的な提案として、クラスプレフィックスとして "My_"を使用しないでください。あなたのニックネームを考慮して "Mem_"などのより個人的なものを使用してください。

関連する問題