ФорумПрограммированиеPHP для идиотовРасширения PHP → Smarty Обёртка данных в шаблон

Smarty Обёртка данных в шаблон

  • pissflaps

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

    Spritz 9 ноября 2010 г. 19:50

    Вот смотрите, задача: есть некая переменная/массив , которые нужно прогнать через шаблон и получить в итоге результат в виде конечного html, ну т.е. вот теоретический пример

    template.tpl:
    <h1>{$myVarOnTemplate}</h1>

    $myvar = "olololo";
    $output = $smarty->команда($myvar,"myVarOnTemplate","template.tpl");
    $smarty->assign("myblock",$output); где $output уже содержит <h1>olololo</h1>
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 9 ноября 2010 г. 20:13, спустя 22 минуты 40 секунд

    Ты лучше скажи для чего нужно, а то не совсем понятно что хочешь
  • pissflaps

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

    Spritz 9 ноября 2010 г. 21:35, спустя 1 час 22 минуты 31 секунду

    Ничё не извращение, это обычная необходимость.
    Это необходимо для того чтобы динамически собирать множество данных в указанную переменную и отображать на шаблоне.
    Т.е. к примеру возьмём динамически меняющие блоки (с разными типами: авторизация, голосования) для разных публикаций и соответственно с разными шаблонами. Порнографию в виде {if …. == 'vote'}{include file=""}{/if} я не собираюсь делать. Есть шаблон template к примеру такого вида
    <div id="left">{$blocks.left}</div>
    <div id="center">{$content}</div>
    <div id="right">{$blocks.right}</div>

    Сейчас это заменяет нативный шаблон php, завёрнутый в ob_start.
    Мне не совсем нравится, что в моём движке используются нативные шаблоны и шаблоны на smarty.
    На данный момент я встретил, только один способ решения этого вопроса:
    http://www.linux.org.ru/forum/web-development/3192946#comment-3195086
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 9 ноября 2010 г. 22:01, спустя 25 минут 28 секунд

    А чем не подходит?
    $smarty->assign($file,"news");

    {include file="$file.tpl"}
  • pissflaps

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

    Spritz 9 ноября 2010 г. 22:20, спустя 19 минут 14 секунд

    Professor, ну как тебе сказать
    цикл:
    смотри ты предлагаешь создать массив примерно такого вида:

    array[0]['template'] = "example_1.tpl"
    array[0]['data'] = $data
    assign(array)
    array[1]['template'] = "another_2.tpl"
    array[1]['data'] = $data
    assign(array)
    array[n]['template'] = "n"
    array[n]['data'] = $data
    assign(array)


    А затем как ты говоришь в цикле загружать {include file="$n.template"} и соответственно отображать данные.
    Фактически этот вариант решает конкретно мою задачу. Я о нём тоже думал, но почему-то предпочёл использовать в данном случае пока нативный шаблон и уже результат его заносить на шаблон smarty (имхо идиотизм высшей марки).
    Я думал всё-таки как-то можно было бы заюзать smarty шаблон для конкретной переменной до вывода самого основного шаблона, но ты вижу понял смысл, спасиб всё равно за идеи.
    Спустя 215 сек.
    Но вариант
    template.tpl:
    <h1>{$myVarOnTemplate}</h1>

    $myvar = "olololo";
    $output = $smarty->команда($myvar,"myVarOnTemplate","template.tpl");
    $smarty->assign("myblock",$output);

    почему-то мне всё равно гораздо симпатичнее
  • pissflaps

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

    Spritz 9 ноября 2010 г. 22:35, спустя 14 минут 43 секунды

    + в карму тебе
    хотя professor пойду я всё-таки в сторону
    array['template'] = "example_1.tpl"
    array['data'] = $data
    {include file="$n.template"}
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 9 ноября 2010 г. 22:43, спустя 7 минут 56 секунд

    Твой вариант
    template.tpl:
    <h1>{$myVarOnTemplate}</h1>

    index.php:
    $myvar = "olololo";
    $output = $smarty->команда($myvar,"myVarOnTemplate","template.tpl");
    $smarty->assign("myblock",$output);
    $smarty->display('template.tpl');


    мой вариант


    template.tpl:
    {include file="$file.tpl"}

    news.tpl:
    <h1>{$myVarOnTemplate}</h1>

    index.php:
    $myvar = "olololo";
    $smarty->assign("file","news");
    $smarty->assign("myVarOnTemplate","olololo");
    $smarty->display('template.tpl');


    Про какие массивы ты говоришь?
    А если есть массивы то покажи как с ними будет выглядеть твой предполагаемый(желаемый) вариант.
  • pissflaps

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

    Spritz 9 ноября 2010 г. 22:43, спустя 38 секунд

    Тема закрыта :) Не парься.
  • Strate

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

    Spritz 21 ноября 2010 г. 0:53, спустя 11 дней 2 часа 9 минут

    $smarty->fetch() ?

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