This bundle does one simple job: takes dates and gives you friendly "2 hours ago"-type messages. Woh!
Last edited {{ post.updatedAt|ago }}
<-- Last edited 1 week ago -->
Added functionality : stop displaying "ago" format after a specified time and display the date in long format after this time
Last edited {{ post.updatedAt|ago("now"|date('Y-m-d H:i:s'),'+ 1 month') }}
<-- Last edited 1 week ago -->
<-- Last edited January 22, 2019 -->
The date formatted can be translated into any language, and may are supported out of the box.
composer require knplabs/knp-time-bundle
Register the bundle:
<?php
// app/AppKernel.php
public function registerBundles()
{
$bundles = array(
// ...
new Knp\Bundle\TimeBundle\KnpTimeBundle(),
);
// ...
}
// Symfony 4.x
// config/bundles.php
return [
//...
Knp\Bundle\TimeBundle\KnpTimeBundle::class => ['all' => true],
];
Enable the translation component if you haven't already done it:
# app/config/config.yml
framework:
# ...
translator: { fallback: '%locale%' } # uncomment this line if you see this line commented
# Symfony 4.x
# config/packages/translation.yaml
framework:
# ...
translator:
default_path: '%kernel.project_dir%/translations'
fallbacks: ['%locale%']
In PHP!
<?php
// Use the helper with Php
echo $view['time']->diff($dateTime); // returns something like "3 minutes ago"
In Twig!
{{ someDateTimeVariable|ago }}
... or use the equivalent function
{{ time_diff(someDateTimeVariable) }}
With time paramater
{{ someDateTimeVariable|ago("now"|date('Y-m-d H:i:s'),'+ 1 month') }}
Will stop displaying the date in "ago" format when "someDateTimeVariable" will be one month older than the current date
***The time paramater must be in a format supported by the strtotime function***
If you want to run tests, please check that you have installed dev dependencies.
./vendor/bin/phpunit
Anyone can contribute to this repository (and it's warmly welcomed!). The following people maintain and can merge into this library: