problème au niveau des Entity

Par Arbi, il y a 7 ans


Bonjour a tous ,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

protected function _setConfirmationToken($confirmation_token) { return uniqid(60); }

Ce que je veux

Je veux générer une chaîne pour le champs confirmation_token.

Ce que j'obtiens

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 ;)

7 réponses

Kareylo, il y a 7 ans

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.

Arbi, il y a 7 ans

Bonjour ou je mets ce code.

Kareylo, il y a 7 ans

A l'endroit où tu dois définir ton token de confirmation

Lartak, il y a 7 ans

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); } }
Arbi, il y a 7 ans

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

Lartak, il y a 7 ans

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.

Arbi, il y a 7 ans

D'accord Merci Lartak pour votre reponse