Twig null date filter shows current date
As explained here in the doc, you can override an existing filter:
To overload an already defined filter, test, operator, global variable, or function, re-define it in an extension and register it as late as possible (order matters).
Here is the code to return an empty string instead of the current date if 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());
From the documentation:
If the value passed to the date filter is null, it will return the current date by default. If an empty string is desired instead of the current date, use a ternary operator:
{{ post.published_at is empty ? "" : post.published_at|date("m/d/Y") }}
You can check it at https://twig.symfony.com/doc/3.x/filters/date.html