我正在使用zend_form来创建呈现的表单。虽然表单中指定了验证规则,但是在响应中注入新元素并非不可能。因此,需要对$this->_request->getParams()
进行更多过滤。
有没有办法在到达动作之前删除所有未经验证的输入?我知道我可以在处理响应之前手动unset()
任何外星人,但我正在寻找更优雅的解决方案。
编辑:
我希望获取请求参数并使用Zend_Db_Table_Abstract::insert($this->_request->getParams())
将它们放入数据库。这样可以正常工作,因为表单已经过验证,并且只有在请求中出现的表单元素才会被验证。由于情况并非如此,默认情况下,我会在插入之前过滤掉元素。
答案 0 :(得分:1)
仅仅在操作中获取所需的字段(在使用Zend_Form验证它们之后)并不容易,并丢弃其余的参数?
除非你的请求中有很多参数,否则这对我来说是最安全的方式......你只会得到你实际期望的参数,而不是别的。
编辑:
如果您只需要使用Zend_Form获取有效值,getValidValues()
方法会有帮助吗?见http://framework.zend.com/manual/en/zend.form.quickstart.html#zend.form.quickstart.validate。然后,您可以unset()
请求中此列表中不包含的所有参数。我不知道是否有办法比这更优雅。