Как получить доступ к итерации smarty из функции php? (Smarty 2.6)

Скажи у меня

{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, но мой начальник настаивает на том, чтобы я делал все это с помощью smarty … PHP или Javascript не допускаются.

Спасибо!

0

Решение

Объем = глобальный
требуется для доступа к переменной из 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-> get_template_vars ( ‘edit_ticket_id’));
{/ PHP}

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

По вопросам рекламы [email protected]