Я использую Symfony2 с FOSUserBundle. Я создал метод, когда я спрашиваю, выполнил ли пользователь определенное действие, например. $user->hasVoted()
.Могу ли я сделать пользовательский метод доступным во всех шаблонах ветви?
В моих шаблонах прута, я хочу, чтобы иметь возможность спросить
{% if user.hasVoted() %}
в каждый шаблон (потому что он имеет последствия, на которых другие обертоны включить), но я не хочу, чтобы пройти весь объект $user
для каждого шаблона.
Есть ли способ сделать этот метод пользователя доступным во всех шаблонах (или я также могу передать логическое значение для всех шаблонов), не передавая это явно каждому шаблону?
Я знаю о injecting variables into all templates from the Symfony cookbook.
# app/config/config.yml
twig:
# ...
globals:
ga_tracking: UA-xxxxx-x
Но запись в поваренной книге либо указывает, как вводить статические значения (как в этом примере выше), так и как вводить службы.
Есть простой способ, как включить это одно логическое значение без определения услуги и ввести его как это:
# app/config/config.yml
twig:
# ...
globals:
user_has_voted: "@acme_user.user_has_voted"
Wow. Так просто. И теперь, когда я вижу этот ответ, я помню, что вы всегда можете получить доступ к текущему пользователю, как это. Благодаря! –
Предупреждение. Если вы не вошли в систему, этот вызов завершится неудачно, я предлагаю {% app.user? app.user.hasVoted(): false%} –
Да. Причина, по которой пользовательское расширение ветки больше. Там вы можете доказать это и другие вещи :) –