2017-01-09 3 views
1

Согласно документацииTwig нулевого фильтр дата показывает текущую дату

Если значение, передаваемое на дату фильтр имеет нулевое значение, он вернет текущей дату по умолчанию. Если пустая строка желательно вместо текущей даты, используйте тройной оператор:

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

Проблема заключается решением при условии, предполагает, что мы пересматриваем все даты в применении и применить тройную операцию мы не хотим показывать сегодняшнюю дату вместо нуля.

Можно ли переопределить фильтр даты по умолчанию? если да, то как я могу это реализовать. Мы используем веточки с 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

Большое спасибо, мне просто пришлось немного изменить его в соответствии с моим решением symfony, добавив $ result = date ($ timestamp-> format ('Ymd H: i')) ; и/перед именами классов –

+0

В чем разница между Twig_Filter и Twig_SimpleFilter? – JorgeeFG

 Смежные вопросы

  • Нет связанных вопросов^_^