一两个星期前我刚认真地开始使用Zend Framework,并且无法使用Zend_View :: escape()手动转义。 有没有人知道如何在不使用$ this-> escape()的情况下自动逃避模板中的变量(Zend_View模板),或任何其他棘手的方法,如输出缓冲和PREG替换* .phtml文件。
我想知道这种情况下的最佳做法。
答案 0 :(得分:2)
您可以扩展Zend_View以创建自动显示事物的自定义视图类,或者您可以使用视图助手来打开/关闭自动调整。
我写了一篇关于它的博文,其中包含两种方法的示例代码: How to automatically escape template variables in Zend_View
答案 1 :(得分:2)
在PiKe项目中,我们构建了一个自定义流包装器,它可以自动转义所有视图变量,并且MINIMAL性能最高!您仍然可以通过以下方式获取RAW值:
<?=~ $variable ?>
注意“〜”字符。结帐http://code.google.com/p/php-pike/wiki/Pike_View_Stream
我知道你说你想避免“输出缓冲和PREG替换* .phtml文件等棘手的方法。”但我仍然认为这是修复Zend Framework 1中自动转义的一种非常巧妙的方法。
答案 2 :(得分:0)
你说“自动”,所以我相信这意味着当你回复$ this-&gt; var;你希望它逃脱。好吧,如果是这种情况,也许你可以在变量设置为视图时进行转义。 AFAIK它是在Zend_View_Abstract类'__set魔术方法*(第300行)中完成的。建议不要更改核心ZF代码,因此可以通过扩展Z_V_A或Z_V来覆盖__set方法。
*我不是100%确定Z_V_A :: __ set是将params分配给视图的唯一地方,但我认为应该是。想不出任何其他地方。
编辑:就个人而言,我会避免这种情况,只需坚持使用好的'$ this-&gt; escape()。更多打字但背景中的魔法更少。
答案 3 :(得分:0)
你已经要求最佳实践,那么你所做的就是它。 等到您想要显示数据时才修改它,仅出于输出原因。
我理解你发现写作 - &gt; escape()每次都很乏味,但它还有很长的路要走。
如果你在哪里自动逃避一切,那么当你想要/需要未转义的数据时,你会遇到问题。
答案 4 :(得分:0)
ZendX_View_Autoescaping
,这个项目为您提供了一个ViewRenderer,它可以自动控制所有已分配的视图变量。
https://github.com/jensklose/ZendX_View_Autoescaping
试试吧!
它支持: