【发布时间】:2012-08-14 19:19:19
【问题描述】:
我的目标是验证 URL 中传递的参数,因此我创建了一个 validate 方法,其中包含要运行的验证器列表,如下所示:
$validators = array(
'number' => array(
'digits',
'presence' => 'required',
'messages' => array(
"%value%' is not a valid number.",
),
),
'country' => array(
'presence' => 'required',
'InArray' => array('haystack' => array('USA', 'CAN', 'AUS', 'JPN')),
'messages' => array(
"'%value%' is not a valid country code.",
),
),
// etc.
);
$valid = new Zend_Filter_Input(array(), $validators, $data);
return $valid->isValid()
问题是“InArray”验证器什么都不做。它不会引发任何错误,它只是不起作用。我假设我的语法错误。
“InArray”验证器的正确语法是什么?
【问题讨论】:
-
你将这些验证器传递给什么?
haystack应该是它自己的索引,就像messages一样,而不是InArray键上的数组元素。 -
为了清楚起见,我更新了问题。你是说'InArray' 会被声明为'digits','haystack' 作为一个单独的索引? [好吧,那不行。它导致 Zend_Validate_InArray 的 Missing 参数]
-
看我的回答,我想你可能一直在尝试将数组传递给 Zend_Form ,它会接受一个 haystack 参数,尽管不是上面提供的格式。
标签: zend-framework zend-validate