说我有
{php}
function hello(){
{/php}
<div class="hello">{$smarty.foreach.panellist.iteration}</div>
{php}
}
{/php}
然后在下面打电话给我:
{foreach from=$channelObj->get_panellist_primary('','','pan_ptyid,pan_label1,pan_label2') item=panelObj name=panellist}
{php}hello(){/php}
{/foreach}
我收到了这个错误:
PHP Fatal error: Using $this when not in object context in /var/www.app1/theURL/otherthings/channel.tpl.php on line 197
为什么这不起作用?如何从函数内部访问此foreach的迭代,最好不传递参数?
因为我知道你会告诉我{php}
已被弃用...我使用它的原因是因为我被要求制作一个非常复杂的模板,所以我需要复杂的功能来构建它它变得一团糟,我以前从未使用过smarty。我已经到了最后期限,而且我已经迟到了,所以我无法学习正确的方法。我知道如何管理这段代码的唯一方法就是使用普通的PHP,但是我的老板坚持要用巧妙的方式完成所有工作......不允许使用PHP或Javascript。
谢谢!
答案 0 :(得分:1)
这是一种可怕的编码风格,它不是使用此类代码的解决方案,因为您很匆忙。如果你根本不了解某些技术,你就不应该为此付钱。
你可以在Smarty中使用:
{foreach from=$x item=panelObj name=panellist}
{assign var="iteration" value=$smarty.foreach.panellist.iteration}
{php}hello(){/php}
{/foreach}
在PHP函数中:
function hello()
{
global $smarty;
?>
<div class="hello"><?php echo $smarty->get_template_vars('iteration'); ?>
</div>
<?php
}
它会起作用(我已对它进行过测试)但我甚至不会尝试将此类代码用于任何项目
答案 1 :(得分:1)
<强>范围=全球强> 来自foreach的访问变量是必需的!
{assign var=SenderID value=$Nachricht.sender_id scope=global}
{php} echo $smarty->getTemplateVars('SenderID'); {/php}
或
{assign var =“edit_ticket_id” value = $ ticket.ticketRaw ['edit_old_ticket_id'] scope = global}
{PHP} 全球$ smarty; 的var_dump($ smarty-&GT; get_template_vars( 'edit_ticket_id')); {/ PHP}