J'ai une relation un-à-un entre un compte et une table d'utilisateur, j'essaye de faire tout le pré-traitement dans le beforeSave
du compte modèle, mais il semble que je ne peux que changer les valeurs de $this->data['Account'][...]
et non $this->data['User'][...]
, pourquoi est-ce le cas?Pourquoi je ne peux pas changer les données d'un autre modèle dans CakePHP
function beforeSave() {
// Check if this is a create or update action
if (empty($this->data['Account']['uid'])) {
$this->data['Account']['uid'] = uniqid();
$this->data['Account']['date_registration'] = date('Y-m-d');
$this->data['Account']['state'] = 1;
// this won't work
$this->data['User']['password'] = Security::hash($this->data['User']['password'], null, true);
}
return true;
}
Une autre question est quelle est la meilleure façon de vérifier si l'utilisateur est mise à jour ou la création du modèle en cas beforeSave, vérifiez empty($this->data['Account']['id']))
?
Merci.
'$ Model :: id' est une propriété spécifiquement définie. Toutes les autres * données * sont uniquement accessibles via '$ Model :: data', comme' $ this-> Account-> data ['Account'] ['name'] '. – deceze
Super utile. J'essayais d'écrire un comportement qui modifierait les données du modèle enfant dans les rappels. Impossible d'obtenir les données à enregistrer dans la base de données même si elle figurait définitivement dans le tableau $ data. Merci d'avoir partagé! – Eric