Вместо того, чтобы устанавливать глобальную переменную ветки, читайте непосредственно из сеанса в шаблоне так:
{% set cart = app.session.get('cart') %}
{{ cart|length }}
Или просто:
{{ app.session.get('cart')|length }}
Это должно дать вам обновленное значение (после того, как действие контроллера обработало данные).
Однако, глядя на ваши связанные вопросы, я думаю, что вы хотите array_sum()
вместо length
, в ветке вы можете использовать фильтр reduce
:
{{ app.session.get('cart')|reduce((carry, v) => carry + v) }}
Суммирует все количественные значения в массиве корзины (общее количество товаров против количества уникальных товаров с length
)
РЕДАКТИРОВАТЬ:
Для автономного приложения, как упомянуто DarkBee, вы можете просто добавить объект сеанса как глобальный вместо значения корзины сеанса.
$twig->addGlobal('session', $session);
Затем в шаблоне:
{{ session.get('cart')|length }}
{# Or #}
{{ session.get('cart')|reduce((carry, v) => carry + v)}}