Smarty VS <? print ?>

Фанат

oncle terrible
Команда форума
grigori, термин спагетти, в первую очередь, пришел из времени, когда люди не понимали, что такое шаблонизатор, и считали, что он служит для "отделения хтмл от пхп". Именно в таком контексте его следует рассматривать, а толкование
triumvirat - это уже попытка подогнать под новые знания.

По поводу форм. Забудьте про формы. Формы не имеют отношения к шаблону. Форму удобнее строить программой. И вообще нафиг вынести из шаблона. Цветуечки можно цссом добавить.
В случаях, когда в форме красота важнее технологии, можно нарисовать в шаблоне, хтмлом.
 

cDLEON

Онанист РНРСlub
Если вас пугает навороченность хелпера, то я объясню: хелпер для построения html должен быть реализован в стиле DOM. А не тупо функцией make_select(), ибо как показывает практика, ситуации бывают разные. Иногда надо сделать optgroup, иногда присвоить отдельному option какие-то уникальные аттрибуты и т.д. т.п.
Какой смысл наворачивать хелпер, если ВСЁ РАВНО понадобится доработка контроллера, что бы увеличить функционал?
Вы, по-сути, заменяете обычный цикл для выведения, кучей ненужного ПХП кода. чем ваше недавно вываленное дерьмо хуже
PHP:
<select>
 <option value="0">Не выбрано</option>
 <?foreach($model as $k=>$v):?>
  <option value="<?=$k?>"><?=$v?></option>
 <?endforeach;?>
</select>
? Лень одно условие добавить? Сравните количество текста на ваше "ноухау" которое ни чем не помогает программисту, а уж тем более верстальщику и обычный классический вариант?
ЗЫ. А потом вот такие вот программисты ругаются на быдлокодеров. Имхо вы ни чем не лучше их.
ЗЫ.ЗЫ. Делай как можно проще, сложнее получится само! ©

-~{}~ 04.08.09 17:11:

ЗЫ.ЗЫ.ЗЫ. И всё равно ваша попытка стандартизировать не охватит всех ньюансов задачи. Что вы, например, будете делать, если человеку захочется что бы каждый option был разного цвета? ))
ЗЫ.ЗЫ.ЗЫ.ЗЫ Удачи в начинании.
 

tf

крылья рулят
ЗЫ.ЗЫ.ЗЫ. И всё равно ваша попытка стандартизировать не охватит всех ньюансов задачи. Что вы, например, будете делать, если человеку захочется что бы каждый option был разного цвета? ))
не это фигня, у него уже решана, а вот Пользователь выбирает какой option, каким цветом уже проблема))

-~{}~ 04.08.09 17:58:

triumvirat, лиш в том что как мне не получить в selecte призвольное ненужное значение '12345'?
 

Духовность™

Продвинутый новичок
cDLEON
чем ваше недавно вываленное дерьмо хуже
Твой пример - это шаблон. А у меня инструмент для генерации html. Вот в чем отличие.

И всё равно ваша попытка стандартизировать не охватит всех ньюансов задачи
у меня всё работает, 99,9% нужд хелперы берут на себя.
<select>
<option value="0">Не выбрано</option>
<?foreach($model as $k=>$v):?>
<option value="<?=$k?>"><?=$v?></option>
<?endforeach;?>
</select>
угу. по меньшей мере всё это будет выглядеть вот так:

PHP:
<select name="name">
 <option value="0">Не выбрано</option>
 <?foreach($model as $k=>$v):?>
  <option <?if($var==$k) echo 'selected '; ?>value="<?=$k?>"><?=htmlspecalchars($v)?></option>
 <?endforeach;?>
</select>
мне вот в этом говнище лень копаться. мне легче написать хелпер и копипастить его везде, подменяя лишь значения аттрибутов и источник $model. По меньшей мере я буду уверен, что у меня будет валидный html, а не вышеприведенная каша.
 

С.

Продвинутый новичок
Вообще говоря, генеририование форм это не шаблонная задача. Точно также, как кеширование не относится к шаблонированию. Совмешать их конечно можно в одном продукте, но эти фичи ничего не говорят о приемуществах собственно того или иного механизма шаблонирования. Хелпер != шаблон!
 

Духовность™

Продвинутый новичок
Я просто вижу, что тут некоторые не понимают зачем вообще нужны хелперы. А нужны они в первую очередь для того, что бы уйти от избыточности html+php. Сделать слой для view, который позволит вынести часто используемые операции с html в отдельный слой. Вот у меня есть такой хелпер - построение строки навигации. Вместо того, что бы в каждом шаблоне писать огромный код отстраничиваетеля, существует такая вот функция. Я её сделал лет 5 наверно назад и до сих пор ей пользуюсь.

Такая же аналогия с примером cDLEON. Можно делать "как можно проще", а потом утопать в повторяющемся нудном коде, а можно сразу делать так,что бы было удобно и не философствовать на тему коней в вакууме.
 

С.

Продвинутый новичок
Никто ничего не имеет против хелперов. Просто хелперы по природе своей антишаблонны. Шаблон служит для того, чтобы открыть "рабочее тело" двигателя (в данном случае HTML) для свободного управления им, а хелпер стремится его наоборот спрятать. Такой вот парадокс получается, который решить не так-то просто.

Например такой вариант решения: прятать можно только те теги или их атрибуты, которые на отвечают за визуальное представление. Например value="..." или checked прятать в хелпер можно, а class="..." или style="..." уже нельзя. Хотя и в этом общем варианте не все гладко.

Другое решение -- хелперы являются подмножеством конкретного проекта. Т. е. в них можно крутить визиализирующие элементы. Но тогда хелперы формально выбывают из состава шаблонизатора.
 

cDLEON

Онанист РНРСlub
triumvirat
А я просто вижу, что некоторые ушли от простоты в угоду понтам, в угоду ни кому не нужным наворотам. Апи которых нужно ещё изучать.
Которое, кстати, по размеру не меньше того ХТМЛа, который показал я. Если не видно разницы, то зачем платить больше?
мне вот в этом говнище лень копаться. мне легче написать хелпер и копипастить его везде, подменяя лишь значения аттрибутов и источник $model. По меньшей мере я буду уверен, что у меня будет валидный html, а не вышеприведенная каша.
Вот в том то и дело, что в своём гавнище вы копаться горазды. А когда лезете в чужое говно ругаетесь на быдлокодеров.
Код, приведённый мной, не похож на кашу. А вот ваш - это кусок говна, только потому, что используется куча функций, атрибутов без автокомплита в массиве и проч.
Закрываю диалог с вами. Удачи.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Автор оригинала: *****
grigori, термин спагетти, в первую очередь, пришел из времени, когда люди не понимали, что такое шаблонизатор, и считали, что он служит для "отделения хтмл от пхп". Именно в таком контексте его следует рассматривать

Формы не имеют отношения к шаблону.
хорошие тезисы, спасибо
А ведь интересно - что именно имеет отношение к шаблону?

Форму удобнее строить программой. И вообще нафиг вынести из шаблона. Цветуечки можно цссом добавить.
:)
Пионэры продолжают изобретать велосипеды, т.е. хелперы, т.е. генераторы ... запутался. А я говорю спасибо Sad Spirit-у за Quick Form и не маюсь дурью.
 

AmdY

Пью пиво
Команда форума
Quick Form
+1
у меня был вариант с xslt, тоже удобно, одеваем через трансформацию во вьюхе, в то же время можно хранить данные для валидации в контроллере.
в шаблоне форма должна только выводиться, а не строиться.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
>переносишь часть отображения в логику..
ой, точно, не кошерно ... вот логику в отображение - это наш путь!
 

nerezus

Вселенский отказник
grigori
зачем из крайности в крайность? Можно не переносить а просто юзать хэлперы(ибо это логика ОТОБРАЖЕНИЯ)
 

DiMA

php.spb.ru
Команда форума
> Никто ничего не имеет против хелперов. Просто хелперы по природе своей антишаблонны.

Ничё подобного. Хелпер избавяет от необходиимости плодить в шаблонах минишаблончики.
 

С.

Продвинутый новичок
Я именно это и имел в виду: "хелпер избавляет от шаблонов", "хелпер убивает шаблоны". в том месте где должен был бы быть минишаблончик, будет вызов хелпера с шаблоном, порезанном на аргумнеты, как макароны по-флотски.

Еще раз, я не против хелперов и мне тоже не нравятся минишаблончики. Но это не значит, что в таком случае позволительно запросто совать куски шаблонов, как литералы в коде. Это же самый классический спагетти получается, но идеологически одобренный. Типа не убий, но за царя и отечество - можно.

Что есть блок {БЕГИН}...{ЕНД}? Тоже минишаблончик, но не вынесенный в отдельный файл, а стоящий там, где ему семантически предназначено. С хелперами можно и нужно поступать аналогичным образом.

-~{}~ 05.08.09 04:41:

Приводимый мной ранее вариант хелпера для форм:

PHP:
<?form::element('options',$options)?>
  <select style="width:100px;">
    <option>-choose one-</option>
  </select>
<?form::end()?>
 

Активист

Активист
Команда форума
Имхо, когда меня просят поменять дизайн какого-нибуть форума или движка самописного, начинаю плюваться. Откуда я знаю, где какой хелпер, что за говнодвижок и вообще, че за херня... Трачу уйму времени.

Если я своему верстальщику буду давать код с хелперами, то для изменения каких-либо дизайнов придется разьеснять ему что и где, ему, что бы сделать какие-либо "нестандартные" изменения, придется ковырятся больше времени, гораздо, а время - деньги, особенно сейчас.

Smarty имеет хорошую документацию, упращенные варианты для дизайнеров, расширенные возможности для программистов. Кроме того, в моей системе нет ни одного хелпера, все на шаблонах, но зато, верстальщик может без моего участия вносить любые изменения, он никакой PHP кодер, но отличный верстальщик.

Уходя от минишаблонов (участков шаблонов, которые повторяются) мы имеем больше затрат времени, что экономически не целесообразно (я говорю про много сайтов, а не один проект). Кроме того, SMARTY может стать и "хелпером", вынесенном из PHP, т.е., у нам много шаблонов: пара основных и шаблоны модулей и т.п.
 

Фанат

oncle terrible
Команда форума
zerkms, да какое там, в стандартной-то форме, отображение? Ну не изображай из себя воина джихада. Чо неясного-то:
Автор оригинала: *****
По поводу форм. Забудьте про формы. Форму удобнее строить программой. И вообще нафиг вынести из шаблона. Цветуечки можно цссом добавить.
Для того 1% случаев, когда в оформление формы значительно отличается от стандартного, никто вам не запрещает нарисовать ее в шаблоне, чистым, хтмлом.
С чем тут можно спорить? За что копья ломать? Что ж вы так любите решения стопроцентные, а если для 99% - то обязательно охаять?

-~{}~ 05.08.09 08:51:

То, что наваял tf, я считаю, относится к указанному 1%.
Ради одной формы из ста, в которой понадобится разным цветом красить полосочки, мы в оставшихся 99 будем писать в шаблоне на каждое поле колбасу $select = $this->goHelper()->inputSelect('user_ban_select', $checked_value); echo, блин, в шаблоне - эхо!, $select->getHtml();
 

zerkms

TDD infected
Команда форума
*****
да тонна там чего подкручивается. Я квикформ достаточно долго юзал, чтобы помнить то время, когда у меня в контроллере были части оформления форм. Как раз из-за квикформа.
 

Фанат

oncle terrible
Команда форума
Ну, может быть. Квикформ лично мне кажется избыточным, как раз чтобы всех удовлетворить. Как и "хелпер" тф.
Имхо, достаточно деревянной рисовалки форм, которая только и умеет, что выплевывать стандартные инпуты и заполнять их. В случае, когда нужна красота - рисовать хтмлом.
 

zerkms

TDD infected
Команда форума
мы юзаем что-то вроде
{form->text name="foobar" value="baz"}
по факту - те же хелперы.
 
Сверху