2013-02-01 64 views
0

/library/My/Validate/如何訪問全球自定義驗證器?

下創建了一個我自己的驗證類在我的表單中我有$this->addElementPrefixPath('My_Validate', 'My/Validate', 'validate');

我用我的驗證,像這樣:

$this->addElement('text', 'aField', array(
    'validators' => array(
     array('TestValidator', false, array('messages' => 'test failed') 
    ), 
)); 

這一切工作。不過,我有興趣通過兩種方式來改善這一點。

  1. 我想使所有窗體都可以訪問我的驗證器。在各種形式下調用addElementPrefixPath()似乎並不是一個乾淨的方式。

  2. 我想通過My_Validate_TestValidator而不是TestValidator,所以其他開發人員知道他們正在使用什麼。

回答

0

要回答你的第一個問題,只有真正的簡單的方法來做到這一點是創建你自己的形式的實例 - My_Form_Abstract - 這有設置前綴路徑的init()方法 - 然後的課程調用父init()。

我不知道有什麼方法可以讓您的第二種方法完美無缺地工作。您需要存儲前綴才能正確構建驗證器加載器。但是,也可以嘗試使用全名創建類的新實例,然後將其添加到元素中:

$element = $this->getElement('aField'); 
$myValidateTestValidator = new My_Validate_TestValidator(); 
$element->addValidator($myValidateTestValidator);