Bonjour,

Etant nouveau sur CakePhp 3, je suis en train de coder mon interface utilisateur, plus précisement la fonction de recovery password. Au niveau de la logique, lorsqu'un utilisateur inscrit son email sur le formulaire et qu'elle est trouvée dans la BDD, on crée un token qu'on lui assigne, ainsi qu'une expiration de token, on lui envoie l'URL avec le token crée et lorsqu'il cliquer sur l'URL, je dois vérifier si l'expiration de token a moins d'un jour afin de permettre le changement de mot de passe.

J'espère que vous avez compris ce que j'essaie de vous expliquer, voici une partie de mon code :

Donnée de la clé d'expiration

  $time = date("Y-m-d");

(Cela me retourne 2015-09-03)

Récupération de la clé dans l'url, récupération de l'utilisateur et comparaison des dates :

//rechercher l'utilisateur en prenant la valeur GET dans l'url
            $query = $this->Users->findByToken($this->request->query['bid']);
            //Date du jour
            $time = date("Y-m-d");
            //On récupère le temps du token
            $timeToken = $query->first()->token_expiration;
            $check2 = $time;
            //Faire la différence des deux et récupérer un timestamp
            $diff = abs(strtotime($check2) - strtotime($timeToken));
            //Permet de traduire le timestamp en date normale
            $difference= date("d/m/Y", $diff);

Le problème, c'est que la différence me sort un timestamp qui affiche toujours 28/06/1970, parce lorsque je récupère le token_expiration depuis ma BDD (qui est censé être 2015-09-03), je récupère toujours

object(Cake\I18n\Time)[189]
  public 'date' => string '2015-09-03 00:00:00' (length=19)
  public 'timezone_type' => int 3
  public 'timezone' => string 'Europe/Zurich' (length=13)

Et je n'arrive pas comparer que la date car un

$query->first()->token_expiration->date

m'affiche toujours que le getter date n'existe pas.

Est-ce que quelqu'un saurait m'aiguiller, j'ai essayé de me renseigner sans trouver de solution.

Merci d'avance.

3 réponses


M4dr0x
Réponse acceptée

cakephp 3 convertit les date en objet I18n/Time, depuis la vue il faut utiliser le helper TimeHelper

echo $this->Time->format($timeToken);
Ragnar
Auteur

Tout a fonctionné en utilisant le timeHelper. Merci M4dr0x.
@hocktor
Je trouvais aussi mais j'ai eu des ordres. ^^

Bonjour.

cakephp 3 convertit les date en objet I18n/Time, depuis la vue il faut utiliser le helper TimeHelper

Le Helper Time, peut parfaitement être utilisé depuis un controller par exemple.

Si vous avez besoin de fonctionnalités TimeHelper en-dehors d’une View, utilisez la classe Time

Source : Cookbook 3.x » Utilitaire Time.