我需要一些帮助来清理 Zend_Form 并向元素添加过滤器。现在我的印象是,当您向表单添加过滤器时,发布表单时,过滤器将作为 Controller 中调度的一部分执行。
然而,当我测试我的表单时,令我惊恐的是,过滤器 StripTags 似乎没有运行,而我正在使用数据中的 HTML 标签获取数据。
我的表单元素如下所示。
$address1 = new Zend_Form_Element_Textarea('address1');
$address1->addFilter('StripTags')
->addFilter('StringTrim')
->setAttrib('cols', 30)
->setAttrib('rows', 5)
->removeDecorator('DtDdWrapper')
->removeDecorator('label')
->removeDecorator('HtmlTag')
但是,如果我在文本区域中放入一些带有 html 标签的数据,然后使用
检查表单是否有效$formData = $this->_request->getPost();
if($form->isValid($formData){
...
数据返回时带有标签。仅当我通过 strip_tags() 函数传递数据时,它才会被删除。
我想我的问题是StipTags是否应该过滤,如果可以的话为什么不呢?我在这里缺少什么。
最佳答案
您没有发布有关如何在调用 isValid 后访问数据的代码。 IIRC 仅当您通过 $form->getValue('someElement')
或类似方式访问数据时,过滤器才会生效。
关于zend-framework - Zend Form addFilter StripTags 不剥离标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1121629/