我对ZF很新。
我一直在Zend Framework上建立一个网站。 一切都很好看。
但我无法弄清楚如何解决1个问题,这在开发文章管理模块时实际上是必不可少的。
我的表格有ZEND_TextArea,如下所示:
$full_text = new Zend_Form_Element_TextArea('full_text');
$full_text->setLabel('Description:')
->setOptions(array('rows' => '28','cols' => '40'))
->setRequired(true)
->addValidator('NotEmpty', true)
->addFilter('HTMLEntities')
->addFilter('StringTrim');
它运行良好,它具有过滤HTMLEntities,对于过滤TextArea非常重要。
在网站上显示保存的数据时,我正在使用html_entity_decode($item['full_text'])
,这很好。
但是当我尝试编辑它时,它会将编码后的文本加载到我的textarea中,编辑完成后会对我已经编码的文本进行编码 - 而在首页上我会遇到如下可怕的事情:
p;quot;color: #ff0000;">asdasda</
span>sdas <strong>sdfsdf&
lt;/strong>&
也许有人可以帮我弄清楚如何处理这个问题,特别是将解码后的数据加载到TextArea的编辑形式,这样我的字符串就不会被编码两次,而且编辑它时会以人的方式显示而不是编码之一。
如果你能提供代码示例 - 真的很棒!!
谢谢!
答案 0 :(得分:1)
如果您在创建表单中使用HtmlEntities过滤器,请不要在编辑表单中使用它。
创建表单:
$elements[] = $this->createElement('text','name',array(
'label' => 'test',
'filters' => array('HtmlEntities'),
));
编辑表格:
$elements[] = $this->createElement('text','name',array(
'label' => 'test',
'value' => html_entity_decode($value)
));
你做html_entity_decode()来设置值,向用户显示正确的“名字”..
在模型中更新数据时,再次使用htmlEntities过滤器:
$data['name'] = $HtmlEntities->filter($data['name']);