vivait / twig-safe-date
A safe date function in twig that will not set null dates to today.
Installs: 23 638
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Requires
- php: >=8.3
- twig/twig: ^3.10
Requires (Dev)
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.7
- vimeo/psalm: ^5.13
This package is not auto-updated.
Last update: 2025-08-20 09:57:40 UTC
README
Simple filter in twig to help avoid problems with things like: {{ null|date('Y-m-d') }}
There are ways around it using twig - the documentation even states:
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") }}
But often, this is overlooked leading to erroneous information being displayed.
Requirements
- PHP = ^8.3
- Twig ^3.10
Installation & Usage
composer require vivait/twig-safe-date
Once required, register the extension with Twig:
$twig = new \Twig_Environment($loader); $twig->addExtension(new TwigSafeDateExtension);
Once registered, you can use the filter date
to output dates as before, with the change that: null values will get turned into known content (default: -
) rather than today's date
The default format is 'F j, Y H:i.'
(the same as the core date
filter in Twig)
{{ post.posted_at|date }}
If you wish to change the format of the date, pass it a parameter with your preferred format:
{{ post.posted_at|date("d/m/Y") }}
If post.posted_at
is null
, then by default the filter will output -
, if you wish to change this to a different value, pass a new default as the third parameter:
{{ post.posted_at|date("d/m/Y", "Europe/London" "Content if null") }}