Je gère une extension TYPO3 qui gère les utilisateurs frontend dans le backend. Par conséquent j'étend le FrontendUserRepository avec mon propre modèle. Mon extension fournit des opérations CRUD et j'ai un problème avec la mise à jour du mot de passe des personnes existantes. L'idée est de ne mettre à jour le mot de passe que si le champ de mot de passe dans le formulaire d'édition est rempli, sinon (s'il est vide) l'ancienne valeur du mot de passe reste dans la base de données.Mise à jour du modèle de domaine à l'exception d'une propriété dans TYPO3 6.2
Maintenant, tout fonctionnait très bien avec TYPO3 4.5, mais maintenant après avoir mis à jour à 6.2, une chaîne vide est enregistrée dans la base de données lors de la présentation du formulaire d'édition avec un champ de mot de passe vide ...
Ceci est mon :
/**
* action update
*
* @param \My\Vendor\Domain\Model\Person $person
*
* @return void
*/
public function updateAction(\My\Vendor\Domain\Model\Person $person) {
// only hash and set password if not empty
if ($person->getPassword() == '') {
// if password was left empty, get current password from database
$oldPerson = $this->personRepository->findByUid($person->getUid());
$person->setPassword($oldPerson->getPassword()));
} else {
$person->setPassword(md5($person->getPassword()));
}
// save updated person to repository
$this->personRepository->update($person);
$this->flashMessageContainer->add('The person data was saved.');
$this->redirect('edit', NULL, NULL, array('person' => $person));
}
Quelqu'un sait-il, pourquoi $oldPerson->getPassword()
ne retourne pas la valeur actuelle du champ de mot de passe de la base de données? Ou existe-t-il un autre moyen de "sauter" une propriété d'un modèle de domaine tout en mettant à jour toutes les autres propriétés? La chose étrange est que cela a fonctionné dans TYPO3 4.5 ...
Merci pour cette réponse détaillée! La fonction '_getCleanProperty()' fonctionne – andreas