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

Tags:

Date

Twig

Symfony