Bonjour,
Je crée un formulaire de modification pour l'utilisateur ou il peut modifier :
- Nom
- Prenom
- Mot de passe
je voudrais que si le mot de passe est vide il ne change pas or, quand je soumet le formulaire il y a une erreur qui me dit
Type error: Argument 1 passed to AppBundle\Entity\User::setPassword() must be of the type string, null given, called in J:\Applications\wamp64\www\labo\CGHBasket_symf20180126_3.4.3\vendor\symfony\symfony\src\Symfony\Component\PropertyAccess\PropertyAccessor.php on line 623
// Pour corriger j'ai appliquer cette modification
public function setPassword(?string $password)
{
$this->password = $password;
}
Mais le mot de passe change tout de même.
Ce que je fais
Donc je me suis dit, si je supprime les données du password dans le PRE_SUBMIT sa réglera le probléme
$builder->addEventListener
(
FormEvents::PRE_SUBMIT,
function(FormEvent $event) {
$form = $event->getForm();
$user = $event->getData();
if($user['password']['first'] == $user['password']['second'] && empty($user['password']['first'])) {
unset($user['password']);
}
dump($user);
//$form->addError(new FormError('TEST'));
$event->setData($user);
}
);
Malheureusement cela ne fonctionne pas, je pense donc que je m'y prend mal il y a sans doute une solution qui permet de dir "Si un champ est vide tu l'ignore".
Merci pour votre aide :)