Jestem nowy Gałązka i szukam, aby włączyć formatowanie datetime
do czas temu jak 2 godziny temu lub 3 dni temu. Istnieje wtyczka jquery-timeago, której używam po stronie klienta, ale byłoby wspaniale, gdybym mógł to zrobić z gałązką. Jeśli gałązka nie jest dostarczana z tym formatem filtra, czy istnieją rozszerzenia, z których mogę korzystać?Gałązka - czas temu Format
Odpowiedz
Dowiedziałem się, że mogę utworzyć niestandardowy filtr z gałązką 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';
}
});
Potem dodać go do mojego środowiska Twig:
$twig = $app->view()->getEnvironment();//because I'm using Twig in Slim framework
$twig->addFilter($filter);
Użyj go mój szablon tak:
{{2014-10-11 12:54:37|timeago}}
Jeśli używasz Twig wewnątrz Symfony, sprawdź KnpTimeBundle . Obejmuje obsługę "temu" w wielu językach.
Dzięki temu będę o tym pamiętać, ale teraz idę na Slim w tym małym projekcie. –
gałązka data przedłużenia robi dokładnie to, o co prosisz:
{{ post.published_at|time_diff }}
Powyższy przykład pokaże na wyjściu ciąg jak 4 sekundy temu lub w 1 miesiąc, w zależności od daty filtrowanej.
Zobacz http://twig.sensiolabs.org/doc/extensions/date.html (już nie działa)
Praca Link http://twig-extensions.readthedocs.io/en/latest/date.html
Niestety ten filtr daje niezdefiniowane (lub zerowe?), Jeśli różnica wynosi 0 sekund. Więc musisz użyć '{{post.published_at | time_diff? : "właśnie teraz"}} '. Polecam napisanie niestandardowego filtru, jak sugerowano powyżej. – Travis
Ten link nie działa. Czy ta funkcja została usunięta z gałązki? Czy jest jakiś sposób, aby to zrobić teraz? – Bryce
Dodałem działający link – 10us
- 1. Jak wyświetlić czytelne dla człowieka "czas temu"
- 2. jak format daty atom czas
- 3. W pewnym momencie, jak mogę znaleźć czas miesiąc temu?
- 4. Czas względny JavaScript 24 godziny temu itp. Jak w czasie
- 5. Czy istnieje alternatywa gałązka dla DateTime :: createFromFormat (...)?
- 6. Gałązka - Dynamic Template Dołącz
- 7. Gałązka uzyskać parametr url []
- 8. NSDate - rok temu, dylemat
- 9. PHP Drukuj godzinę temu
- 10. Jak utworzyć DateTime równe 15 minut temu?
- 11. DateTime.Now.AddDays (-1) otrzyma datę-czas dokładnie 24 godziny temu, ale jak uzyskać czas na wczoraj o określonej godzinie?
- 12. jQuery Czasu temu z timestamp?
- 13. Czas na ciąg z HH: MM: Format SS (C-programowanie)
- 14. Bieżący czas w GG: MM: format SS am/pm?
- 15. Format/czas w milisekundach, do lokalnego łańcucha w Androidzie
- 16. Pobierz czas z MySQL jako HH: MM format
- 17. Przyjazny dla użytkownika format czasu w Pythonie?
- 18. jak mogę sprawdzić w bash czy plik został utworzony więcej niż x czas temu?
- 19. Jak wyświetlić czas typu "x dni temu" za pomocą Humanize w szablonie Django?
- 20. gałązka: JEŻELI z wieloma warunkami
- 21. Symfony2 gałązka render, wyjątek rzucony
- 22. Gałązka: Jak napisać jeśli in_array
- 23. Gałązka Dołącz zawartość do bloku
- 24. Gałązka Symfony2 żądanie GET zmienną
- 25. zmienna jquery wewnątrz szablonu gałązka
- 26. Zmienna nazwa zmiennej w gałązka
- 27. Minus W definicji bloku gałązka
- 28. Format niestandardowy dla względnego przedziału czasowego
- 29. Symfony2 Assetic + Gałązka Szablon JavaScript Dziedziczenie
- 30. iOS - Przyjazny format NSDate
Wiem, że to trochę czasu od kiedy to pisał, ale czy jest jakiś sposób, aby dodać tłumaczenia do rozwiązania? Udało mi się wprowadzić obiekt Translator do usługi, ale Symfony nie rozpoznaje "translation-ids". – wawa