Я новичок в Twig и я ищу, чтобы превратить формат datetime
в время назад как 2 часа назад или 3 дня назад. Существует jquery-плагин (jquery-timeago), который я использую на стороне клиента, но было бы здорово, если бы я мог сделать это с веточкой. Если твинг не входит в этот формат фильтра, есть расширения, которые я могу использовать?Twig - время назад формат
ответ
Я узнал, что могу создать собственный фильтр с веточкой Twig_SimpleFilter
.
$filter = new Twig_SimpleFilter('timeago', function ($datetime) {
$time = time() - strtotime($datetime);
$units = array (
31536000 => 'year',
2592000 => 'month',
604800 => 'week',
86400 => 'day',
3600 => 'hour',
60 => 'minute',
1 => 'second'
);
foreach ($units as $unit => $val) {
if ($time < $unit) continue;
$numberOfUnits = floor($time/$unit);
return ($val == 'second')? 'a few seconds ago' :
(($numberOfUnits>1) ? $numberOfUnits : 'a')
.' '.$val.(($numberOfUnits>1) ? 's' : '').' ago';
}
});
Затем я добавляю его в моей среде Twig:
$twig = $app->view()->getEnvironment();//because I'm using Twig in Slim framework
$twig->addFilter($filter);
Используйте это мой шаблон, как это:
{{2014-10-11 12:54:37|timeago}}
Если вы используете Twig внутри Symfony, проверить KnpTimeBundle , Включает поддержку «назад» на нескольких языках.
Спасибо, я буду иметь это в виду, но сейчас я собираюсь сделать Slim в этом маленьком проекте. –
расширения даты прутика в делает именно то, что вы спрашиваете:
{{ post.published_at|time_diff }}
В приведенном выше примере вывода будет строка, как 4 секунды назад или в 1 месяц, в зависимости от фильтруемой даты.
Смотреть http://twig.sensiolabs.org/doc/extensions/date.html (больше не работает)
Работа ссылка http://twig-extensions.readthedocs.io/en/latest/date.html
К сожалению, этот фильтр дает неопределенный (или null?), Если разница составляет 0 секунд. Итак, вы должны использовать '{{post.published_at | time_diff? : «прямо сейчас»}} '. Я рекомендую написать специальный фильтр, как было предложено выше. – Travis
Эта ссылка не работает. Была ли эта функция удалена из ветки? Есть ли способ сделать это сейчас? – Bryce
Я добавил рабочую ссылку – 10us
- 1. jQuery время назад формат плагин
- 2. Twig формы строитель время
- 3. Swift время новообращенного время назад
- 4. Как получить формат «дней назад, часов назад» в iOS?
- 5. TWIG Дата Время Язык локаль
- 6. Формат Twig - date функции имеет неожиданное поведение
- 7. Формат чисел Twig без округлых десятичных знаков
- 8. Twig: формат даты с localizeddate расширением
- 9. Laravel - время возврата назад, как «назад 2d»
- 10. Странное поведение во время перемотки назад назад
- 11. xslt: время назад тест
- 12. Время назад функция php
- 13. Instafeedjs moment.js время назад
- 14. php время назад функция
- 15. Преобразование «время назад» в секундах в android
- 16. Формат UTC Время Время Местное время
- 17. Twig datetime filter, чтобы скрыть время, если полночь
- 18. 30 минут назад формат времени в Solaris
- 19. Нулевое время назад в autosys
- 20. Реализует время назад, как youtube
- 21. Время работы назад с QueryPerformanceCounter()
- 22. «Время назад» из timestamp MySQL
- 23. выберите время 5 минут назад
- 24. Угловая 2 "время назад" труба
- 25. Как перенести время полчаса назад
- 26. Функция даты TWIG, отображающая неправильное время datetime
- 27. Время отображения и дата в twig
- 28. TWIG date filter Стандартное тихоокеанское время
- 29. DATEPART результат формат, время
- 30. Joda время недопустимый формат
Я знаю, что это время, так как вы писали, но есть способ, чтобы добавить перевод к вашему решению? Я смог ввести объект Translator в службу, но Symfony не распознает «перевод-идентификаторы». – wawa