3

我在 Smarty 中的继承不起作用,

这些是模板文件:

./views/parent.tpl ./views/modules/child.tpl

所以这是我的孩子.tpl =

/* child.tpl */
{extends file='../parent.tpl'}
{block name='contents_accueil'}

<article>
<p>Something here</p>
</article>

{/block}

还有我的 parent.tpl :

<div>
<p>Something else</p>
   {block name='contents_accueil'}{/block}
</div>

为什么它不起作用?它不包括我的 child.tpl 文件。

谢谢

调用 parent.tpl 的文件 php

require_once('application/librairies/tpl/Smarty.class.php');
require_once('config.inc.php');

$data=array();
$smarty=new Smarty();

if(isset($_GET['page'])) {
    $current_page=$_GET['page'];
} 

$data = (isset($current_page)) ? $_PAGES[$current_page] : $data=HOME_PAGE;

$smarty->assign('data', $data);
$smarty->display('./application/views/parent.tpl');
4

1 回答 1

3

正如 sofl 所说,你弄错了聪明的模板继承。您必须显示 child.tpl,而不是父级,因为父级可用于多个子级,即 child2.tpl 将如下所示:

{extends file='../parent.tpl'}
{block name='contents_accueil'}

<article>
<p>Something completely different here</p>
</article>

{/block}

如您所见,孩子是唯一拥有所有信息的人。如果只显示 parent.tpl,smarty 不知道什么文件用作子文件。将 {extends} 视为一个容器 include

于 2013-10-15T16:02:43.673 回答