【问题标题】:Smarty extends not worksSmarty 扩展不起作用
【发布时间】:2013-10-15 08:42:14
【问题描述】:

我在 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');

【问题讨论】:

  • 块名应该被引用并且{extends file='../layout.tpl'}去layout.tpl而不是parent.tpl
  • 我编辑了它但不起作用
  • 您遇到什么错误?
  • 向我们展示调用模板的 php 代码 ($smarty->display)
  • 我用 php.ini 文件编辑了我的帖子。我没有错误,只是 child.tpl 似乎没有出现

标签: php smarty extends


【解决方案1】:

正如 sofl 所说,你弄错了 smarty 模板继承。您必须显示 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} 视为容器包含

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-30
    • 2014-02-20
    • 2019-03-21
    • 2011-08-18
    • 2012-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多