bonjour,
J'aurais besoin de vos conseils.
dans mon application j'utilise bcp les dates en les comparant; $date1 : est un parametre de l'URL sous le format (2015-12-21) et $date2 est un objet time provenant de la BDD.
Pour comparer ces 2 dates, j'ai toujours besoin de faire les mêmes opérations en les formatant;
par exemple :
$date_parse = Time::parse($entity->date);
$date_finale = $date_parse->i18nFormat('yy-MM-dd');
j'ai fait un helper date mais qui ne fonctionne que dans les vues (controller => PHP Fatal error: Call to a member function date_jour() on boolean), ou alors je dois recopier dans appcontroller ma fonction, ce qui m'oblige à changer 2 fichiers lorsque je modifie mon helper date
public function date_jour($date){
$test = Time::parse($date);
$date = $test->i18nFormat('yy-MM-dd');
return $date;
}
quelle serait selon vous la meilleure méthode pour réaliser cela ?
Merci.
Hello,
Si tu veux utiliser une fonction custom à la fois dans les Vues et dans les Controllers, alors créer toi une classe Utility
ou quelque chose de ce genre. Car avec les Helpers, comme tu l'a dit, tu pourras que dans les Vues, et avec les Components, tu pourras que dans les Controllers.
Par exemple, tu peux faire ça. (Tu peux lui mettre le nom que tu veux) :
src/Utility/TimeParser.php
namespace App\Utility;
use Cake\I18n\Time;
class TimeParser
{
/**
* Parse a Date and return it with the format 'yy-MM-dd'.
*
* @param string $date The date to parse.
*
* @return false|string
*/
public static function dateJour($date)
{
if (empty($date)) {
return false;
}
$parsed = Time::parse($date);
$date = $parsed->i18nFormat('yy-MM-dd');
return $date;
}
}
//Pour l'utiliser :
use App\Utility\TimeParser;
$date = TimeParser::dateJour($date);
//Ou
$date = \App\Utility\TimeParser::dateJour($date);
Merci Xeta, je vois que c'est le même principe que ta classe Arrayor sur ton depot.
je vais tester ca...