使用zend_form从请求中删除未经验证的元素

时间:2011-08-22 12:20:47

标签: zend-framework zend-form

我正在使用zend_form来创建呈现的表单。虽然表单中指定了验证规则,但是在响应中注入新元素并非不可能。因此,需要对$this->_request->getParams()进行更多过滤。

有没有办法在到达动作之前删除所有未经验证的输入?我知道我可以在处理响应之前手动unset()任何外星人,但我正在寻找更优雅的解决方案。

编辑:

我希望获取请求参数并使用Zend_Db_Table_Abstract::insert($this->_request->getParams())将它们放入数据库。这样可以正常工作,因为表单已经过验证,并且只有在请求中出现的表单元素才会被验证。由于情况并非如此,默认情况下,我会在插入之前过滤掉元素。

1 个答案:

答案 0 :(得分:1)

仅仅在操作中获取所需的字段(在使用Zend_Form验证它们之后)并不容易,并丢弃其余的参数?

除非你的请求中有很多参数,否则这对我来说是最安全的方式......你只会得到你实际期望的参数,而不是别的。

编辑:

如果您只需要使用Zend_Form获取有效值,getValidValues()方法会有帮助吗?见http://framework.zend.com/manual/en/zend.form.quickstart.html#zend.form.quickstart.validate。然后,您可以unset()请求中此列表中不包含的所有参数。我不知道是否有办法比这更优雅。