如何从字符串而不是文件呈现 Zend_View 脚本
Posted
技术标签:
【中文标题】如何从字符串而不是文件呈现 Zend_View 脚本【英文标题】:How do I render a Zend_View script from a string instead of a file 【发布时间】:2012-01-09 16:15:30 【问题描述】:我目前有一个在数据库表中写入一些页面的 CMS。为了用 Zend_View 渲染它们,我有一个将它们写入文件系统的方法。我想跳过这个过程,直接从数据库中渲染模板。
例如:
<?php
$template = '<html>
<head>
<title>Test</title>
</head>
<body>
<?php echo $this->test ?>
</body>
</html>';
$view = new Zend_View();
$view->test = 'This is a test';
echo $view->render($template);
?>
【问题讨论】:
这不是按预期工作吗? 不,默认情况下这不起作用。 Zend_View_Abstract::render 必须传递一个文件名。将抛出带有消息“脚本' ...'在路径中找不到...”的 Zend_View_Exception。 【参考方案1】:Zend_View
扩展Zend_View_Abstract
并声明_run()
方法的具体实现(由render()
调用)。原文:
protected function _run()
include func_get_arg(0);
我猜你想要的基本上是:
class Zend_View_String extends Zend_View // or maybe // extends Zend_View_Abstract
protected function _run()
$php = func_get_arg(0);
eval(' ?>'. $php. '<?php ');
但这可能比将其写入文件并调用include
慢。您可以将文件转储代码放在您自己的 _run
方法中。这样做留给读者作为练习。
【讨论】:
以上是关于如何从字符串而不是文件呈现 Zend_View 脚本的主要内容,如果未能解决你的问题,请参考以下文章
如何动态呈现 pug 文件而不是使用静态 angular-cli index.html?
Pdf.js:使用 base64 文件源而不是 url 呈现 pdf 文件
Pdf.js:使用base64文件源而不是url呈现pdf文件