我想知道Zend_Form如何验证输入,我的意思是它如何知道要验证哪些输入字段。我期待着php全局变量($ _ POST,$ _GET),并且我没有看到任何设置为标识符(例如)以便知道如何验证。任何人都可以向我推荐这个东西的任何指南?zend表单验证
zend表单验证
回答
看看Zend_Form quickstart,这是一个关于如何开始在Zend中处理表单的非常明智的例子。
验证文本输入如下:
$username = new Zend_Form_Element_Text('username');
// Passing a Zend_Validate_* object:
$username->addValidator(new Zend_Validate_Alnum());
// Passing a validator name:
$username->addValidator('alnum');
我明白如何使用。我不明白Zend如何执行此任务。当我提交表单时,它如何知道要验证的输入字段? – 2011-03-28 09:58:13
@aykut请认真阅读链接教程。有一部分叫做*检查表单是否有效*。 – fabrik 2011-03-28 10:03:41
嘛,找出最好的办法是看code of Zend_Form
:
/**
* Validate the form
*
* @param array $data
* @return boolean
*/
public function isValid($data)
{
if (!is_array($data)) {
require_once 'Zend/Form/Exception.php';
throw new Zend_Form_Exception(__METHOD__ . ' expects an array');
}
$translator = $this->getTranslator();
$valid = true;
$eBelongTo = null;
if ($this->isArray()) {
$eBelongTo = $this->getElementsBelongTo();
$data = $this->_dissolveArrayValue($data, $eBelongTo);
}
$context = $data;
foreach ($this->getElements() as $key => $element) {
if (null !== $translator && $this->hasTranslator()
&& !$element->hasTranslator()) {
$element->setTranslator($translator);
}
$check = $data;
if (($belongsTo = $element->getBelongsTo()) !== $eBelongTo) {
$check = $this->_dissolveArrayValue($data, $belongsTo);
}
if (!isset($check[$key])) {
$valid = $element->isValid(null, $context) && $valid;
} else {
$valid = $element->isValid($check[$key], $context) && $valid;
$data = $this->_dissolveArrayUnsetKey($data, $belongsTo, $key);
}
}
foreach ($this->getSubForms() as $key => $form) {
if (null !== $translator && !$form->hasTranslator()) {
$form->setTranslator($translator);
}
if (isset($data[$key]) && !$form->isArray()) {
$valid = $form->isValid($data[$key]) && $valid;
} else {
$valid = $form->isValid($data) && $valid;
}
}
$this->_errorsExist = !$valid;
// If manually flagged as an error, return invalid status
if ($this->_errorsForced) {
return false;
}
return $valid;
}
这意味着简单地说,Zend_Form
将遍历覆盖表单中所有已配置的元素,并将它们与传递给它的数组中的值进行比较。如果匹配,它将根据配置的验证器验证该单个值。
所以,你创建窗体的行为,然后检查是否有post | get数据。你可以在这里检查is_valid表格。您需要将$ _POST或$ _GET数据传递给isValid()函数。示例:
if ($request->isPost() && $form->isValid($request->getPost())) {
isValid()是函数Zend_Form类。表单运行每个元素的所有验证(只要你不设置停止在第一次验证失败),然后也为子表单。
或者你可以使用:
$username_stringlength_validate = new Zend_Validate_StringLength(6, 20);
$username = new Zend_Form_Element_Text('username');
$username->setLabel('Username: ')
->addFilters(array('StringTrim', 'HtmlEntities'))
->setAttrib('minlength', '6')
->setAttrib('class', 'required')
->removeDecorator('label')
->removeDecorator('HtmlTag')
->removeDecorator('DtDdWrapper')
->setDecorators(array(array('ViewHelper'), array('Errors')))
->addValidator($username_stringlength_validate);
- 1. Zend表单验证
- 2. zend表单验证+ ajax
- 3. Zend表单验证URL
- 4. 如何验证Zend表单打开标记:Zend表单
- 5. Zend的表单验证工作不
- 6. Zend 2表单验证程序
- 7. 验证Zend表单时排除元素
- 8. Zend表单 - 为什么验证失败?
- 9. 需要帮助Zend表单验证
- 10. Zend表单验证码修饰器
- 11. zend表单验证码问题
- 12. Zend框架 - 定制表单验证
- 13. zend中验证表单a的问题
- 14. zend表单浮点和整数验证
- 15. 做zend表单验证需要javascript吗?
- 16. 表单验证未在Zend的形式
- 17. Zend表单和批注验证
- 18. Zend 1.11.9表单装饰器/验证码
- 19. Zend表格验证器foreach
- 20. 搜索表单使用Zend表单与验证器和inputFIlters
- 21. Zend中的多页表单太早验证所有表单
- 22. jQuery的表单创建zend表单验证
- 23. 表单验证未验证
- 24. 需要帮助Zend表单下拉菜单验证
- 25. 表单验证
- 26. 验证表单?
- 27. 表单验证
- 28. 验证表单
- 29. 表单验证
- 30. 表单验证
通常你传递值的数组形式 - $> isValid()的例如$形式 - >的isValid($ _ POST) – 2011-03-28 15:54:33
请接受给定答案中的一个或指出为什么他们没有人帮助回答你的问题,所以人们有机会更新他们的答案。谢谢。 – Gordon 2011-04-07 07:31:43