我在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语法(例如变量)。