我在menu
中有一个名为parent.tpl
的函数:
{function menu level=0}
<ul class="level{$level}">
{foreach $data as $entry}
{if is_array($entry)}
<li>{$entry@key}</li>
{menu data=$entry level=$level+1}
{else}
<li>{$entry}</li>
{/if}
{/foreach}
</ul>
{/function}
我想在menu
child.tpl
功能
{extends file='./base.tpl'}
{block name=head}
<link href="/css/mypage.css" rel="stylesheet" type="text/css"/>
<script src="/js/mypage.js"></script>
{/block}
{block name=body}
{$menu = ['item1','item2','item3' => ['item3-1','item3-2','item3-3' =>
['item3-3-1','item3-3-2']],'item4']}
{menu data=$menu}
{/block}
但是聪明的错误:
: Uncaught --> Smarty Compiler: Syntax error in template "file:/Users/yangchangshu/smarty/child.tpl" on line 11 "{menu data=$menu}" unknown tag "menu" <--
thrown in
我该如何解决这个问题?
答案 0 :(得分:0)
根据继承模板的性质处理父模板在链中最后处理。因此,在编译子模板时,{menu}未定义。 解决方法: 把{function menu ....}放在子模板中,然后{include}它 {block name = body}