2017-01-09 109 views
1

根據文檔嫩枝空日期過濾器顯示當前日期

如果傳遞的日期過濾器值爲空,默認情況下將返回 當前日期。如果一個空字符串希望,而不是 當前日期,使用三元運算符:

http://twig.sensiolabs.org/doc/2.x/filters/date.html

的問題是所提供的解決方案需要我們重新審視在應用程序中的所有日期和運用三元操作我們永遠不想顯示今天的日期而不是null。

是否可以重寫默認的日期過濾器?如果是的話,我該如何實現這一點。我們正在使用的樹枝用symfony 2.7

+0

是的,你可以到這裏看看:https://stackoverflow.com/questions/23958147/ symfony2-twig-overriding-default-path-function –

回答

4

正如所解釋的here in the doc,您可以覆蓋現有的過濾器:

超載已定義的過濾器,測試,運營商,全球 變量或函數,重新定義它在一個擴展名中,並儘可能延遲登記爲 (順序很重要)。

這裏是返回一個空字符串,而不是當前的日期,如果null代碼:

class DateEmptyIfNull extends Twig_Extension 
{ 
    public function getFilters() 
    { 
     return array(
      new Twig_Filter('date', array($this, 'dateFilter')), 
     ); 
    } 

    public function dateFilter($timestamp, $format = 'F j, Y H:i') 
    { 
     $result = ''; 
     if($timestamp !== null) 
     { 
      $result = parent::dateFilter($timestamp, $format); 
     } 
     return $result; 
    } 
} 

$twig = new Twig_Environment($loader); 
$twig->addExtension(new DateEmptyIfNull()); 
+0

非常感謝,我只是通過添加$ result = date($ timestamp-> format('Ymd H:i'))來修改它以適應我的symfony解決方案。 ;和/之前的類名 –

+0

Twig_Filter和Twig_SimpleFilter類之間的區別是什麼? – JorgeeFG