2011-08-19 112 views
1

我試圖使用$ element-> addPrefixPath()來加載我的自定義驗證器,但它不會找到類,直到我添加一個名稱空間自動加載到ini文件。Zend框架 - addPrefixPath和名稱空間

我認爲addPrefixPath的全部重點只是爲窗體加載驗證程序類,而不是整個應用程序。它是否正確?

+0

您是否添加了絕對路徑或相對路徑? –

回答

0

這取決於你如何調用驗證並將其連接到該元素:

  1. 使用實例
  2. 使用「縮寫爲」格式(我自己的術語)

舉一個例子:

$validator = new My_Validate_SomeValidator(array(
    'option1' => 'value1', 
    'option2' => 'value2', 
)); 
$element->addValidator($validator, true); 

在這種情況下,你自己實例化驗證器。因此,需要將My_作爲自動加載器名稱空間添加。

或者,用 「縮寫爲」 格式:

$element->addValidator(array('SomeValidator', array(
    'option1' => 'value1', 
    'option2' => 'value2', 
), true); 

$element->setValidators(array(
    array('EmailAddress', true), 
    array('SomeValidator', true, array(
     'option1' => 'value1', 
     'option2' => 'value2', 
    ), 
)); 

在這種情況下,你給的元素只是一個縮寫名稱 - 'SomeValidator' - 驗證器,含蓄地期待元素來處理實例化。因此,元素需要被賦予一些名稱空間/路徑信息,這樣才能完成這項工作。