Я работаю над проектом, используя версию Symfony 3.0, и я добавил место, где пользователи могут видеть, сколько времени назад был добавлен элемент. Чтобы иметь возможность использовать это, я добавил расширение даты в файл services.yml следующим образом:
twig.extension.date:
class: Twig_Extensions_Extension_Date
tags:
- { name: twig.extension }
Теперь я могу использовать следующий код: {{ answer.answeredAt|time_diff }}
и все правильно, потому что он показывает, например, «2 часа назад».
Моя проблема в том, что некоторые из этих «ответов» могут быть добавлены вызовом javascript. Я немного поискал, и лучшим вариантом было отобразить этот бит ветки в контроллере в виде строки и отправить его обратно в ответе javascript. Сюда:
$now = new \DateTime();
$template = $this->get('twig')->createTemplate('{{ answeredAt|time_diff }}');
$date = $template->render(['answeredAt' => $now]);
$response = new JsonResponse([
'answer' => [
'id' => $answer->getId(),
'text' => $answer->getText(),
'date' => $date
]
]);
Я думал, что это должно работать нормально, но это не так. Хотя ошибки не было, поле даты всегда возвращается пустым. Нужно ли мне делать что-то особенное в services.yml, чтобы сделать расширения доступными на контроллерах?
'date' => $this->get('twig')->getExtension('date')->diff(new \DateTime())
- person DarkBee   schedule 07.01.2019->diff($this->get('twig'), new \DateTime());
- извините - person DarkBee   schedule 07.01.20190
, он действительно вернет''
, как показано здесь здесь - person DarkBee   schedule 07.01.2019->modify('-1 second')
и все работало нормально, даже с моим подходом. Спасибо за помощь. - person rafaelmorais   schedule 07.01.2019$now = new \DateTime(); $diff = date_diff($now, $this>-$this->createdAt); $days = $diff->format("%a"); return $days;
- person hous   schedule 07.01.2019