如何从字符串而不是文件呈现 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文件

QR Code 字体样式将每个字符呈现为 qr 代码,而不是整个文本

在 C# Razor 中将字符串呈现为 HTML

在 argparse 中从变量而不是命令行获取值