2016-07-07 30 views
0

我在zend框架中使用phtml文件。現在我正在使用.tpl文件。 我發現如何使用html腳本和所有。但是當我想使用PHP代碼。然後我正在使用:如何檢索佈局zend framework2中的內容?

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

問題在於它是在layout.tpl文件中。主要內容在其他模塊的index.tpl中。

而不是獲取索引文件的內容它回聲只是'test'.How使它的工作?我也試過{$this->content}

+0

也許你需要使用'Smarty'語法,而不是'php'。 – newage

+0

如果我搜索得到這個語法的建議只有:( – Shashikala

+0

我得到了PHP:<?php echo $ foo;?> Smarty:{$ foo}但沒有用 – Shashikala

回答

1

如果您使用的是Smarty模板引擎和SmartyModule,那麼您將不得不在視圖腳本中使用Smarty語法,因爲Zend\View\Renderer\PhpRenderer將被Smarty Renderer(和Smarty模板引擎)覆蓋。此外,如果您希望在Smarty中使用佈局,請參閱Smarty's Template Inheritance機制。這裏有一個例子:

layout.tpl

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

mypage.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(請參見渲染器的source code的502-503行)。因此,與任何include一樣,PHP代碼將立即執行並存儲在渲染器的$__content屬性中。這可能是您的echo命令立即執行的原因。因此,基本上,您將不得不通過SmartyModule選擇您的渲染器(PhpRenderer或Smarty Renderer),然後遵守其內部工作原理(分別爲PHP/HTML或Smarty語法(例如,variables))。