Zend框架Zend表单元素Textarea,带有BBCode和PHP代码示例

Zend框架Zend表单元素Textarea,带有BBCode和PHP代码示例,php,forms,zend-framework,textarea,Php,Forms,Zend Framework,Textarea,我目前正在编写一个系统,用于发布有关基本PHP的教程 但是,我目前正在编写一个表单来编辑数据库中的教程 现在,我想做的是,当我在网站上查看表单时使用setDefaults。但是,文本区域不显示教程。我在谷歌上搜索了一下,发现了这个问题,在这里也找到了一个答案,似乎是一个非常类似的问题 首先,我需要告诉您将在此textarea元素中显示的值: -这是一个关于PHP的教程,由于它包含PHP代码,可能是一些HTML和CSS,甚至可能是Javascript,所以它将包含特殊的carachters 它将

我目前正在编写一个系统,用于发布有关基本PHP的教程

但是,我目前正在编写一个表单来编辑数据库中的教程

现在,我想做的是,当我在网站上查看表单时使用setDefaults。但是,文本区域不显示教程。我在谷歌上搜索了一下,发现了这个问题,在这里也找到了一个答案,似乎是一个非常类似的问题

首先,我需要告诉您将在此textarea元素中显示的值: -这是一个关于PHP的教程,由于它包含PHP代码,可能是一些HTML和CSS,甚至可能是Javascript,所以它将包含特殊的carachters

  • 它将包含BBCode,因为我正在使用bbcodes来设计我的教程,例如来自Zend Framework的BBCode标记+我为语法高亮显示创建的其他bbcodes

  • 文本框将通过一个名为“Markitup”的Javascript编辑器显示,该编辑器基于jQuery。但是,编辑器被禁用以缩小问题,因此plase忽略最后一部分,因为它只是导入:

  • Code+BBCode将显示在此textarea元素中

那么,下一步是什么: 我在这里找到了问题的根源:

它清楚地告诉我,Zend Framework将转义我的值,这一定是原因,我填充的表单中唯一的元素是带有代码的textarea

问题: 如何在不更改Zend框架中的原始文件的情况下,获得纯文本区域元素中显示的教程

我不想更改helper中的转义(值),以便我的表单正常工作。因为下一次更新将覆盖所有内容。所以我需要在不更改原始文件的情况下执行此操作

我期待着与您讨论这个问题,并希望有人能给我一个提示或解决这个问题的方法。

根据默认的转义方法是
htmlspecialchars
,但您可以使用
setEscape
方法覆盖它。在控制器中设置,以在其工作时进行试验:

$this->view->setEscape('yoursescapefunction');

但奇怪的是,“nothing”出现了,因为只有当
ENT\u IGNORE
作为标志提供时才返回空字符串,这不是默认值。

谢谢vstm,我现在找到了一个糟糕的解决方案。我正在做的是:创建一个具有转义函数的类,该函数只返回字符串。然后我创建一个视图实例,并将escape方法设置为我在自己的类中创建的方法,如前所述。然后我渲染表单并对其进行响应。现在唯一的问题是,我在控制器中回音,我真的不喜欢这样!所以我希望,有人能帮我解决这个问题。这是我在控制器中的动作方法:@Richard,谢谢你的代码,现在我明白你的意思了。但是您不必创建新的视图对象,因为框架已经提供了一个。因此,不是
$view->setEscape(数组($escaperClass,'escape')您可以执行
$this->view->setEscape(数组($escaperClass,'escape')
然后删除
$view
变量。然后在
edit.phtml
中,您可以响应表单(我希望我的解释清楚)。太棒了。非常感谢vstm。你帮了我很多谢谢工作完美。