Расширение шаблонизатора Blitz

fixxxer

К.О.
Партнер клуба
Есть и плюсы - мы откладываем рендеринг до return $this->render() в методе контоллера, и вполне имеем возможность заменить рендерер в последний момент (скажем, на возврат накопленного банальным json-ом).
 

Absinthe

жожо
hell0w0rd формат ответа определяет контроллер. Формат данных (теги, стили и т.д.), а я его и имел ввиду - view. Логику отображения - тоже view.
 

hell0w0rd

Продвинутый новичок
Absinthe не понял, ты против того чтобы вью отвечало за стиль вывода данных и логику вывода данных? А за что тогда еще вьюхе отвечать?
 

Absinthe

жожо
hell0w0rd я не против. Но зачем плодить 2 уровня view, когда можно это сделать в одном?
 

fixxxer

К.О.
Партнер клуба
Absinthe

а, я тебя не так понял. В этом смысле согласен. Но такая прослойка и не нужна.

Смотри, предположим, надо показать Специальную Ссылку премиум-пользователю:

PHP:
{{ IF user.hasPremiumFeatures }}
<a href="/settings/premium">Premium</a>
{{ END }}
ровно то же самое, что в случае с twig/smarty/plain-php/whatever.

А если у тебя в шаблоне начинается вот такая хрень

PHP:
{% if user.isAuthenticated and user.status in ['Premium', 'SuperPremium'] and user.balance > 0 %}
<a href="/settings/premium">Premium</a>
{% endif %}
- ничего хорошего.

То есть, я про что. Чистая логика отображения - она обычно совершенно тупа и банальна, а когда начинаются всякие сложные проверки - это 99% мы унесли бизнес-логику в шаблон. hasPremiumFeatures - это нифига не логика отображения в данном примере. И "прослойка" - ровно то же унесение бизнес-логики во view, чего быть не должно. Таким вещам вообще место в модели (или промежуточном сервисе).

Да, бывают случаи, когда именно логика отображения сложная - но в этом случае уместен хелпер, а не простыня в шаблоне.

Да, бывают случаи, когда действительно в шаблоне хорошо бы написать {% if isFoo and isBar %}, при этом такое пишется 1 раз и не разрастется в простыню. В случае с blitz, насколько я понимаю мотивацию, это было умышленное ограничение, поскольку на практике часто начинается копипаста и простыня. Разумеется, любые подобные ограничения можно перевести на уровень code review. Тут надо понимать что blitz сделан в ***** в первую очередь для себя.

Я сам давно пользуюсь твигом, но вышеприведенных ограничений стараюсь придерживаться и с ним.
 
Сверху