Шаблонизатор, подходы

ShVad

JSmart CMS
Здравствуйте, как вы относитесь к такому методу?

PHP:
{comments}
<div id="comment-id-{id}" style="min-width: 250px; overflow: auto; border: 1px solid #E6E4E6; padding: 5px; margin-bottom: 10px;">
    <div style="border-bottom: 1px dashed #E6E4E6; padding: 0 0 5px 2px;">
        <a href="#">{name}</a>
    </div>
    <div style="padding: 2px;">
        {comment}
    </div>
    <div style="border-top: 1px dashed #E6E4E6; padding: 5px 2px 0 0; text-align: right;">
        <a href="#">ответить</a> | <a href="JavaScript:" onclick="Comment_Edit({id});">редактировать</a> | <a href="JavaScript:" onclick="Comment_Delete({id});">удалить</a>
    </div>
</div>
{/comments}

<div id="ajax-comment"></div>

<div class="block_title">Добавление комментария</div>
<div>
    <p><textarea id="comment_text" style="width: 660px; height: 120px;"></textarea></p>
    <p><input type="submit" class="button" value="Отправить" onclick="Comment_Add('{sing}');" /></p>
</div>
{comments}...{/comments} обрабатываются как foreach.

Или удобнее все таки делать в отдельном файле? И выводить тегом {comments}.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
ShVad
отрицательно отношусь вообще к дополнительным надстройкам над php.
 

ShVad

JSmart CMS
Лучше циклом грузить шаблон просмотра комментариев, а потом выводить его в основной?
В моем первом методе плохо то, что нельзя делать "set block"...
 

AmdY

Пью пиво
Команда форума
ShVad
какие преимущества он даёт кроме ограничений и паления скорости в сранении с php native?

это было в phpbb шаблонах, два ацких месяца в карьере, пока не встретил смарти
 

newARTix

Новичок
Удобнее так:
PHP:
<?foreach($comments AS $k=>$c){?>
<div id="comment-id-<?=$c['id']?>" style="min-width: 250px; overflow: auto; border: 1px solid #E6E4E6; padding: 5px; margin-bottom: 10px;">
    <div style="border-bottom: 1px dashed #E6E4E6; padding: 0 0 5px 2px;">
        <a href="#"><?=e($c['name'])?></a>
    </div>
    <div style="padding: 2px;">
        <?=e($c['text'])?>
    </div>
    <div style="border-top: 1px dashed #E6E4E6; padding: 5px 2px 0 0; text-align: right;">
        <a href="#">ответить</a> | <a href="JavaScript:" onclick="Comment_Edit(<?=$c['id']?>);">редактировать</a> | <a href="JavaScript:" onclick="Comment_Delete(<?=$c['id']?>);">удалить</a>
    </div>
</div>
<?}?>

<div id="ajax-comment"></div>

<div class="block_title">Добавление комментария</div>
<div>
    <p><textarea id="comment_text" style="width: 660px; height: 120px;"></textarea></p>
    <p><input type="submit" class="button" value="Отправить" onclick="Comment_Add('<?=$c['sing']?>');" /></p>
</div>
 

ShVad

JSmart CMS
Получается лучше проверять например право на редактирование прямо в шаблоне через php функцию? Чем строить что то вроде [edit]редактировать[/edit]
 

newARTix

Новичок
ShVad
ты можешь в контроллере проверять право, а в шаблонизатор передаешь переменную-флаг и просто ставишь условие на true/false. А вообще ты можешь все что угодно, потому и удобнее нативные шаблоны.
 

Moisha

специалист по муравьям
Или удобнее все таки делать в отдельном файле? И выводить тегом {comments}.
Правильный вопрос: какой шаблонизатор стоит использовать

Если этот синтаксис идёт в своём собственном шаблонизаторе - то декларативный синтаксис лучше.
Он всегда был в шаблонах лучше, потому что для человека более удобный, и менее инвариантный.
 
  • Like
Реакции: AmdY

Духовность™

Продвинутый новичок
Здравствуйте, как вы относитесь к такому методу?
Здравствуйте. Как в вашем "методе" проверить значение переменной и в зависимости от её значения, вывести тот или иной блок HTML-кода? И зачем ваш подход нужен в целом? Какова цель ваших свистоплясок с шаблоном? Чего хотите добиться?

Получается лучше проверять например право на редактирование прямо в шаблоне через php функцию?
право на редактирование должно определяться при запросе php-скрипта. В шаблоне ты можешь вызвать объект модели (или массив прав) и посмотреть, разрешено ли для данного пользователя использовать право на редактирование и в зависимости от этого, выводить или нет html.
 

Absinthe

жожо
какие преимущества он даёт кроме ограничений и паления скорости в сранении с php native?
Это миф. Если библиотека шаблонизатора загружена уже, то падения не будет. А прирост производительности может появиться по сравнению с PHP native.
Это словесные спекуляции, но обоснованные логически.

какой шаблонизатор стоит использовать
Тот, который удовлетворяет поставленную задачу. Но навряд ли это будет "своём собственном шаблонизаторе".
 

AmdY

Пью пиво
Команда форума
Это миф. Если библиотека шаблонизатора загружена уже, то падения не будет. А прирост производительности может появиться по сравнению с PHP native.
Это словесные спекуляции, но обоснованные логически.
даже больше, помнится WP на примере своего quicky демонстрировал как засчёт внутренней оптимизации и кеширования скорость возрастает.
 
Сверху