Smarty扩展不起作用

时间:2013-10-15 08:42:14

标签: php smarty extends

我在Smarty的继承不起作用,

这些是模板文件:

./视图/ 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>

为什么不起作用?它不包含my 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');

1 个答案:

答案 0 :(得分:2)

正如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}视为容器包含