我是新來的樹枝,我期待把一個datetime
格式轉換成很久以前像3小時前或4天前。有一個jquery插件(jquery-timeago),我一直在客戶端使用,但如果我可以用樹枝做到這一點,那將是非常棒的。如果樹枝沒有附帶這種過濾器格式,我可以使用哪些擴展名?嫩枝 - 前段時間格式
7
A
回答
12
我發現我可以用樹枝創建一個自定義過濾器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 = $app->view()->getEnvironment();//because I'm using Twig in Slim framework
$twig->addFilter($filter);
使用它我的模板是這樣的:如果你使用的嫩枝Symfony的內部
{{2014-10-11 12:54:37|timeago}}
3
12
枝條的日期延長不正是你問:
{{ post.published_at|time_diff }}
上面會輸出的例子一個字符串像4秒前或1個月,取決於過濾日期。
見http://twig.sensiolabs.org/doc/extensions/date.html(不再工作)
工作環節http://twig-extensions.readthedocs.io/en/latest/date.html
相關問題
- 1. 嫩枝 - 日期格式
- 2. 在嫩枝
- 3. 嫩枝形式塊
- 4. 嫩枝:前面代碼
- 5. 嫩枝「反式」不工作
- 6. Symfony2的嫩枝樣式表
- 7. Symfony的嫩枝樣式
- 8. 如何嫩枝
- 9. [Symfony的+嫩枝]
- 10. 嫩枝錯誤
- 11. 嫩枝 - 使用父
- 12. 嵌套塊嫩枝
- 13. Symfony2的:用嫩枝
- 14. 嫩枝:與localizeddate擴展
- 15. 使用XML ::嫩枝
- 16. XML ::嫩枝和findnodes
- 17. 解析在嫩枝
- 18. 嫩枝,得到源
- 19. 定製Contrain嫩枝
- 20. 嫩枝爲CakePHP的
- 21. 解析XML和XML ::嫩枝
- 22. 嫩枝在一個變量
- 23. 嫩枝和HTML級聯
- 24. 獲取形式的名稱在嫩枝
- 25. 嫩枝賦值運算符
- 26. Symfony的嫩枝例外
- 27. 嫩枝和截斷文本
- 28. 嫩枝緩存的權限
- 29. 的foreach嫩枝2個陣列同時
- 30. 嫩枝For循環 - 問題
我知道這是一個一段時間,因爲你的貼吧,但有沒有辦法翻譯添加到您的解決方案?我能夠在服務中注入Translator對象,但Symfony不識別「翻譯id」。 – wawa 2017-06-29 15:33:02