Мое веб-приложение в качестве верхней панели, где мне нужно отображать количество непрочитанных сообщений. Каждый объект User
как ассоциация с Message
(многие ко многим). Отображение общего количества сообщений (для данного пользователя) будет просто:Назначить глобальную переменную Twig в Symfony 2?
class User
{
/*
* @ORM\ManyToMany(targetEntity="Message", invertedBy="users")
*/
private $messages;
}
В Twig:
Total messages: {{ app.user.messages|length }}.
Но что, если мне нужно рассчитывать только новые сообщения? Предполагая, что мой репозиторий имеет метод getNewMessages(User $user)
, как можно присвоить это значение глобально для использования в каждом шаблоне?
Я знаю о Twig глобал, но я не знаю, где я должен поставить соответствующий код:
$twig = new Twig_Environment($loader);
$twig->addGlobal('text', new Text());
{{ text.lipsum(40) }}
Можете ли вы объяснить ваш последнее предложение? Как я должен кэшировать значение и какие условия должны инициировать новый запрос по запросу? Благодарю. – gremo
Это зависит от вас. Вы устанавливаете счет как сеанс var, чтобы он продолжал сеанс. Это все, что я подразумеваю под «кэшированием». Затем вы могли повторно запрашивать новые сообщения, если запрос был X секунд/минут после предыдущего. На самом деле это не важно, просто побочный эффект его хранения в сеансе. – MDrollette