доступ к массиву, который ключ, выданный из функции, приводит к smarty - PullRequest
0 голосов
/ 06 марта 2012

У меня есть $ period var, который определяется с помощью:

Array
(
[2012-03-09] => Array
    (
        [3] => Array
            (
                [group] => 1
                [color] => #00FF00
            )

    )

[2012-03-07] => Array
    (
        [3] => Array
            (
                [group] => 2
                [color] => #00FF00
            )

    )
)

Я использую smarty и хочу напечатать значение, если ключ существует, а затем выполнить итерацию по всем данным:

{if array_key_exists($jour->nameMysql(), $periods)}
    {foreach from=$periods[$jour->nameMysql()] item=periodsdf}
        {$periodsdf}
    {/foreach}
{/if}

Ключ возвращается результатом функции $ jour-> nameMysql () .первая часть кода работает (array_key_exists, но foreach не работает. Он зависает, и у меня нет сообщения об ошибке или предупреждения

Я уже пытался изменить foreach с помощью {foreach from ="$ period. {$ jour-> nameMysql ()}" item = perioddf} , но это не работает.

Я также попытался назначить переменную $ jour-> nameMysql () для varи использовать эту переменную, но она не работает

можете ли вы помочь мне заставить ее работать?

Редактировать

Этот код дает результат Iхочу

{php}
   $periods = $this->get_template_vars('periods');
   $jour = $this->get_template_vars('jour');
   $this->assign('period', $periods[$jour->nameMysql()]);
{/php}
{foreach from=$period item=per}
   <div style='color: {$per.color}'>{$per.group}</div>
{/foreach}

Если я найду умный синтаксис ... это хорошо

Спасибо

1 Ответ

0 голосов
/ 06 марта 2012
{$key = $jour->nameMysql()}
{if array_key_exists($key, $periods)}
    {foreach from=$periods.$key item=periodsdf}
        {$periodsdf}
    {/foreach}
{/if}

или

{if isset($periods.$key)}
    {foreach from=$periods.$key item=periodsdf}
        {$periodsdf}
    {/foreach}
{/if}
...