Bonjour a tous ,
Voila je rencontre un petit problème avec mon code.
protected function _setConfirmationToken($confirmation_token) {
return uniqid(60);
}
Je veux générer une chaîne pour le champs confirmation_token.
object(App\Model\Entity\User) {
'username' => 'test',
'password' => '$2y$10$BH6oeC4ReDb2EXqfj7in3.O4Zn1cMK9SVDNduNQiuQ/Lu1V7WLEIG',
'email' => 'test@test.com',
'role' => 'test',
'avatar' => 'test.jpeg',
'created' => object(Cake\I18n\FrozenTime) {
'time' => '2018-06-19T14:15:12+00:00',
'timezone' => 'UTC',
'fixedNowTime' => false
},
'modified' => object(Cake\I18n\FrozenTime) {
'time' => '2018-06-19T14:15:12+00:00',
'timezone' => 'UTC',
'fixedNowTime' => false
},
'[new]' => true,
'[accessible]' => [
'username' => true,
'password' => true,
'email' => true,
'role' => true,
'avatar' => true,
'confirmation_token' => true,
'confirmed' => true,
'created' => true,
'modified' => true
],
'[dirty]' => [
'username' => true,
'password' => true,
'email' => true,
'role' => true,
'avatar' => true,
'created' => true,
'modified' => true
],
'[original]' => [],
'[virtual]' => [],
'[errors]' => [],
'[invalid]' => [],
'[repository]' => 'Users'
}
toujours il'ya pas de valeur pour la confirmation_token
merci d'avance ;)
Bonjour.
Si tu génères le token de confirmation lors de la création d'un enregistrement, pourquoi est-ce que tu ne le génère pas tout simplement dans le callback beforeSave ?
Par exemple :
public function beforeSave(Event $event, EntityInterface $entity, ArrayObject $options)
{
if ($entity->isNew()) {
$entity->confirmation_token = uniqid(60);
}
}
Pour ce faire, tu dois forcer à utiliser la méthode set
$model->set('confirmation_token', true);
Etant donné que tu dois fournir une valeur, j'ai mis true.
Bonjour a tous
Oui, ca marche si on passe par le beforeSave .
est ce que ca ne marche pas si on ne passe pas par UserTable?
merci
Tu n'es pas obligé de le faire directement dans le fichier du modèle, tu peux très bien modifier la valeur du champ depuis ton controleur, mais pour quelque chose qui n'est censé s'effectuer que lors d'un enregistrement en BDD, personnellement je trouve que c'est plus logique, surtout que ça t'évitera des erreurs inutiles.