【发布时间】:2011-08-19 10:15:23
【问题描述】:
我尝试使用 $element->addPrefixPath() 来加载我的自定义验证器,但在我将命名空间自动加载添加到 ini 文件之前它找不到类。
我认为 addPrefixPath 的全部意义在于只加载表单的验证器类,而不是整个应用程序。这是正确的吗?
【问题讨论】:
-
你添加的是绝对路径还是相对路径?
标签: zend-framework
我尝试使用 $element->addPrefixPath() 来加载我的自定义验证器,但在我将命名空间自动加载添加到 ini 文件之前它找不到类。
我认为 addPrefixPath 的全部意义在于只加载表单的验证器类,而不是整个应用程序。这是正确的吗?
【问题讨论】:
标签: zend-framework
这取决于您如何调用验证器并将其附加到元素:
作为一个例子:
$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' - 用于验证器,隐含地期望 元素 来处理实例化。因此,需要为元素提供一些命名空间/路径信息以便它能够完成这项工作是有道理的。
【讨论】: