如何访问smarty';从php函数开始的每次迭代是什么?(Smarty 2.6) 问题:

如何访问smarty';从php函数开始的每次迭代是什么?(Smarty 2.6) 问题:,php,smarty,smarty2,Php,Smarty,Smarty2,说我有 {php} function hello(){ {/php} <div class="hello">{$smarty.foreach.panellist.iteration}</div> {php} } {/php} 我得到了这个错误: PHP致命错误:第197行的/var/www.app1/theURL/otherthings/channel.tpl.PHP中不在对象上下文中使用$this 为什么这样不行?如何从函数

说我有

{php}
    function hello(){
{/php}
    <div class="hello">{$smarty.foreach.panellist.iteration}</div>
{php}
    }
{/php}
我得到了这个错误:

PHP致命错误:第197行的/var/www.app1/theURL/otherthings/channel.tpl.PHP中不在对象上下文中使用$this

为什么这样不行?如何从函数内部访问此foreach的迭代,最好不传递参数

更多细节 因为我知道你会告诉我,
{php}
被弃用了……我之所以使用它,是因为我被要求制作一个非常复杂的模板,所以我需要复杂的函数来构建它,而不会让它变得一团糟,而且我以前从未使用过smarty。我快到最后期限了,而且已经迟到了,所以我无法学习smarty的正确方法。我知道如何管理这段代码的唯一方法是使用普通的PHP,但我的老板坚持我使用smarty来完成整个工作……不允许使用PHP或Javascript


谢谢

这是一种可怕的编码风格,使用这种代码不是一种解决方案,因为您很匆忙。如果你对某些技术一无所知,你就不应该为此收钱

您可以在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
}
函数hello() { 全球$smarty; ?>
范围=全局 是foreach中access变量所必需的

{assign var=SenderID value=$Nachricht.sender_id scope=global} 
{php} echo $smarty->getTemplateVars('SenderID'); {/php} 

{assign var=“编辑票据id” value=$ticket.ticketRaw['edit\u old\u ticket\u id']scope=global}

{php} 全球$smarty; 变量转储($smarty->get_template_vars('edit_ticket_id')); {/php}


如果“不允许使用PHP…”,那么呃…
{PHP}
是不允许的,对吗?:)说真的,可以吗?如果不允许,你的生活可能会更艰难到成为SOL的地步……这对我来说就像一部经典之作:你在Smarty中遇到了一些你不知道如何做的事情(与编写可重用的代码块有关),从一条你认为很容易的路线开始,最后得到一件你不知道如何在Smarty中完成的事情(以非标准方式混合PHP和Smarty)。你可能会发现,回到原来的问题上比继续使用错误的方法更好地利用你的时间。@bishop…不,我可以使用.tpl文件中的任何内容…我没有访问class@IMSoP我已经走了很多路,我只是需要帮助来做这件事。我可以用一堆意大利面条来做rty代码,但我想避免这种情况。我希望smarty代码看起来像,例如,
{wrapperifessful()}{content}{closewrapperifessful()}
另一种选择是
{if\\thing | | \\ thing和\\ thing eq thing}divdiv…等等{/if>{content}{if非常长的if语句,它甚至不值得使用smarty等}你好{/if}
没有分配就无法直接从$smarty访问迭代?@NickManning我不知道另一种方法
{assign var=SenderID value=$Nachricht.sender_id scope=global} 
{php} echo $smarty->getTemplateVars('SenderID'); {/php}