ФорумПрограммированиеPHP для идиотовРасширения PHP → Массив. Шаблонизатор. Говнокод?!

Массив. Шаблонизатор. Говнокод?!

  • SOKOJI

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

    Spritz 11 декабря 2009 г. 3:11

    В общем, использую в своем проекте нативный шаблонизатор - Stemp. Все отлично, но! В шаблон требуется вывести массив новостей, к примеру. Все получается отлично, но в самом шаблоне нужно юзать цикл, а это очень не желательно (для моего преокта). Решил сделать немного иначе - присвоить переменной, передаваемой в шаблон значение функции. Вот сама функция:

    function news()
    {
    $test = mysql_query("SELECT * FROM `news`");

    while( $testing = mysql_fetch_assoc($test) )
    {

    $out .= <<<HTML

    <h2><a href="/news/view/">{$testing['title']}</a></h2>
    <p>
    {$testing['content']}
    </p>
    <hr />

    HTML;

    }

    return $out;
    }


    Это нормальная функция или же лучше цикл использовать в шаблоне?
    Может быть есть более универсальные методы?
  • md5

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

    Spritz 11 декабря 2009 г. 3:17, спустя 6 минут 24 секунды

    это ненормальная функция
    смысла тогда в шаблонизаторе нет
    вы должны формировать массив данных и передать в шаблонизатор, а там циклом разобрать и украсить html-ем

    stemp гавно, как и все нативные шаблонизаторы, имхо
    Спустя 18 сек.
    принцип работы шаблонизатора описал тут — http://pyha.ru/articles/php/smarty-for-beginners/ (читайте — «Разберем жизненную ситуацию»)
    все умрут, а я изумруд
  • artoodetoo

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

    Spritz 11 декабря 2009 г. 3:17, спустя 23 часа 59 минут 13 секунд

    а описать цикл в шаблоне религия не позволяет?
    помоему один хрен
    ιιlllιlllι унц-унц
  • phpdude

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

    Spritz 11 декабря 2009 г. 3:19, спустя 2 минуты 30 секунд

    хер на двух концах с тремя яйцами
    Сапожник без сапог
  • Givi

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

    Spritz 11 декабря 2009 г. 3:19, спустя 5 секунд

    Конечно же, если уж следовать разделению шаблонов и выполнения, то такой подход - это пиздец.
    Лучше сделать отдельный шаблон для вывода новостей (просто сделать цикл там или подобное) и его инклудить в основной шаблон.
    Хотя, циклы в основном шаблоне, ИМХО, не столь и плохая вещь, так как по сути без них чаще всего никуда не денешься (тот же Смарти тоже юзает циклы в своих шаблонах + ещё и логику).
  • SOKOJI

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

    Spritz 11 декабря 2009 г. 8:04, спустя 4 часа 45 минут 8 секунд

    Спасибо, учту.
    Но все же навязывается тогда еще один вопрос: каким образом в dle выводятся новости? Там в шаблоне прописал {content}, и новости выведены. Можете в этом направлении что-нибудь сказать (ну кроме как "эта пять" и т.п.)?
  • md5

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

    Spritz 11 декабря 2009 г. 8:07, спустя 2 минуты 26 секунд

    SOKOJI, а кто сказал, что dle — охуенной MVC-рованный движок?
    все умрут, а я изумруд
  • SOKOJI

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

    Spritz 11 декабря 2009 г. 8:23, спустя 16 минут 39 секунд


    SOKOJI, а кто сказал, что dle — охуенной MVC-рованный движок?

    Никто такого не говорил. Просто мне сама схема реализации интересна, для собственного развития.
    А что касается модели MVC, то у какого движка эта модель грамотна построена?
  • adw0rd

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

    Spritz 11 декабря 2009 г. 8:26, спустя 2 минуты 56 секунд

    SOKOJI, у Django, имхо
    adw/0
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 11 декабря 2009 г. 8:29, спустя 2 минуты 53 секунды

    эт точно, тоже считаю, что стоит обратить внимание на джагу. Только вот не понимаю я запуска фильтров в шаблонах. Не понимаю…
  • phpdude

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

    Spritz 11 декабря 2009 г. 8:32, спустя 2 минуты 22 секунды

    lkе - хуйня
    Спустя 7 сек.
    * дле
    Сапожник без сапог
  • Givi

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

    Spritz 11 декабря 2009 г. 8:37, спустя 5 минут 50 секунд

    SOKOJI, там идет подключение "вспомагательных" шаблонов, в которых и находится цикл. В общем, то, о чем я тебе говорил. А сами шаблоны находятся рядом с основным шаблоном (все в папке "view")… но могут находится где угодно, вплоть до папки модуля. В общем, тут зависит от фантазии говнокодера :)
  • SOKOJI

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

    Spritz 11 декабря 2009 г. 8:41, спустя 3 минуты 17 секунд

    adw0rd, это же python, не? Т.е. на php хорошего ничего нет?
  • adw0rd

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

    Spritz 11 декабря 2009 г. 8:46, спустя 5 минут 29 секунд


    adw0rd, это же python, не? Т.е. на php хорошего ничего нет?
    в рамках PHP говорят что есть, вот: Symfony, CakePHP, CodeIgniter, дальше пусть кто другой продолжит…. я со всеми ими только поверхностно знаком
    adw/0
  • SOKOJI

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

    Spritz 11 декабря 2009 г. 8:48, спустя 1 минуту 21 секунду

    adw0rd, спасибо. Недавно CodeIgniter смотрел, пробовал, вроде нормальный framework.

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