如何在布局 zend 框架中检索内容2.


How to retrieve content in layout zend framework2?

我在zend框架中使用phtml文件。现在我正在使用 .tpl 文件。我找到了如何使用html脚本和所有。但是当我想使用php代码时。然后我使用:

<?php 
    echo "test";
    echo $this->content; 
?>

这样做的问题是它在layout.tpl文件中。主要内容在其他模块的索引中。

而不是获取索引文件的内容,它只是回显"测试"。如何使其工作?

编辑:我也尝试了{$this->content}

如果您使用的是 Smarty 模板引擎

和 SmartyModule,那么您将不得不在视图脚本中使用 Smarty 语法,因为Zend'View'Renderer'PhpRenderer将被 Smarty 渲染器(和 Smarty 模板引擎)覆盖。 另外,如果您希望将布局与 Smarty 一起使用,请参阅 Smarty 的模板继承机制。 下面是一个示例:

布局.tpl

<html>
<head>
  <title>{block name=title}Default Page Title{/block}</title>
</head>
<body>
{block name=body}{/block}
</body>
</html>

我的页面.tpl

{extends file="layout.tpl"}
{block name=title}My Page Title{/block}
{block name=body}My HTML Page Body goes here{/block}

否则,如果您使用的是 PhpRenderer,即使您将视图脚本的文件扩展名更改为 .tpl,它也不会"识别"任何模板语言,因为它只会include视图脚本的内容(请参阅渲染器源代码的第 502-503 行)。 因此,与任何include一样,PHP 代码将立即执行并存储在渲染器的 $__content 属性中。 这可能是立即执行echo命令的原因。

所以,基本上,你必须选择你的渲染器(PhpRenderer或通过SmartyModule的Smarty Renderer),然后遵守其内部工作原理(PHP/HTML或Smarty语法(例如变量)。