ФорумПрограммированиеPHP для идиотовРасширения PHP → Динамически сформировать имя переменной Smarty

Динамически сформировать имя переменной Smarty

  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

    Spritz 6 декабря 2007 г. 14:38

    Изначально задача следующая: выводится список треков, в каждой строке есть голосовалка (5 радиобаттонов) и ссылка "прослушать". До того, как трек прослушан, голосовать нельзя. Сделать решил на куках, при переходе по ссылке "прослушать" помимо самого прослушивания, устанавливается кук, что трек с определенным id прослушан.

    Вот дальше и возникает проблема. Планировал сделать так:

    $db->sql_query ('SELECT `id` FROM `'.TRACKS.'`');
    while ($row = $db->fetchrow ())
    {
    $cname ="list_".$row['id'];
    if (!isset ($_COOKIE[$cname]))
    $disabled[$row['id']] = "disabled";
    }


    А дальше нужно типа такого:

    {foreach from=$tracks item="v"}
    <input type="radio" name="rad_{$v.id}" value="1" {$disabled.{$v.id}}>
    {/foreach}


    То есть мне нужно динамически сформировать или имя переменной смарти или ключ массива в смарти. Чтобы в коде выше {$disabled.{$v.id}} работало как {$disabled.1}, {$disabled.2} и т. д. Это вообще возможно или стоит поискать другие пути?
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 7 декабря 2007 г. 0:45, спустя 10 часов 7 минут 4 секунды

    это можно (и наверно нужно) все делать на стороне обработчика!

    или делать {assign var='vid' value=$v.id} а потом {$disabled.$vid}} (в цикле), но это маразм
    или ещё ман поковырять, так не скажу
    все умрут, а я изумруд
  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

    Spritz 7 декабря 2007 г. 3:58, спустя 3 часа 12 минут 50 секунд

    md5, спасибо. Чувствовал что как-то с помощью ассигна можно, но не додумался :)

    Что касается маразма - я других вариантов не вижу. Я вообще считаю, что это глупо (голосовать только если был переход по ссылке "прослушать"), но так захотели заказчики.
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 7 декабря 2007 г. 4:03, спустя 4 минуты 37 секунд

    маразм я говорю, потому что надо формировать готовые данные в обработчике и только потом передавать в шаблонизатор, а не в нём накручивать в 3 короба
    все умрут, а я изумруд
  • vasa_c

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 7 декабря 2007 г. 4:58, спустя 55 минут 34 секунды

    потому что надо формировать готовые данные в обработчике и только потом передавать в шаблонизатор

    Вот за это я смарти и ненавижу
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 7 декабря 2007 г. 5:29, спустя 30 минут 34 секунды

    вот с массивами да, косяк…
    все умрут, а я изумруд

Пожалуйста, авторизуйтесь, чтобы написать комментарий!