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 сделан в ***** в первую очередь для себя.
Я сам давно пользуюсь твигом, но вышеприведенных ограничений стараюсь придерживаться и с ним.