Zend Framework Zend Form Element Textarea 与 BBCode 和 PHP 代码示例

Zend Framework Zend Form Element Textarea with BBCode and PHP Code Examples

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

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

现在,我要做的是,在我查看网站上的表单时使用 setDefaults。但是,textarea 没有显示教程。我在谷歌上搜索了一下,发现了这个问题,还在这里找到了一个答案,这似乎是一个非常相似的问题。

首先我需要告诉你这个 textarea 元素中将显示的值:
- 它是一个关于 PHP 的教程,其中包含特殊的字符,因为它包含 php 代码,可能包含一些 HTML 和一些 CSS,甚至可能是 Javascript。

  • 它将包含 BBCode,因为我正在使用 bbcode 来设置我的教程的样式,例如 Zend 框架中的 BBCode 标记,以及我为语法高亮创建的附加 bbcode

  • 将使用基于 jQuery 的名为 "Markitup" 的 Javascript 编辑器查看文本框。但是,编辑器被禁用以缩小问题,因此请忽略最后一部分,因为它只是 import:

  • 代码 BBCode 将显示在此 textarea 元素中。

那么接下来是什么:
我在这里找到了问题的根源:
为什么 zend_form 不能使用带有变音符号的 Firebird db 记录填充输入?

它清楚地告诉我,Zend Framework 将逃避我的价值观,这一定是原因,我填充的表单中唯一的元素是带有代码的文本区域。

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

我不想更改助手中的转义(值),以便我的表单正常工作。因为下一次更新将简单地覆盖所有内容。所以我需要在不更改原始文件的情况下这样做。

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


根据 Zend 手册,默认转义方法是 htmlspecialchars,但您可以使用 setEscape 方法覆盖它。设置在Controller中试试看是否有效:

1
$this->view->setEscape('yourescapefunction');

但奇怪的是,"nothing" 出现了,因为 htmlspecialchars 仅在 ENT_IGNORE 作为标志提供且不是默认值时才返回空字符串。