1

我对采埃孚还很陌生。

我一直在 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']),这很好。

但是,一旦我尝试对其进行编辑,它就会将编码的文本加载到我的文本区域中,在编辑后它会对我已经编码的文本进行编码 - 在首页上,我得到了一些可怕的东西,例如:

    p;quot;color: #ff0000;">asdasda</
span>sdas <strong>sdfsdf&
lt;/strong>&

也许有人可以帮我弄清楚如何处理这个问题,特别是将解码的数据加载到 TextArea 的编辑形式中,这样我的字符串就不会被编码两次,并且在编辑时它是以人类的方式显示而不是编码的。

如果你能提供代码示例 - 真的很棒!

谢谢!!

4

1 回答 1

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']);
于 2013-06-12T09:29:16.173 回答