Bonjour,
Dans mon backend j'aimerais pouvoir modifier un utilisateur.
Dans ces informations se trouve le Password.
Mon problème est quand je rend mon formulaire, le Password est vide et du coup la modification ne peux pas se faire.
J'aimerais que le mots de passe soit modifier uniquement quand le mot de passe est rempli (ou alors soit recuperer et ecrit en cripter )
pour que je puisse modifier les autres informations quand meme.
Mon Form UserType :
<?php
namespace App\Form\Admin;
use App\Entity\User;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints\Length;
use Symfony\Component\Validator\Constraints\NotBlank;
class UserType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('username')
// ->add('roles')
->add('email')
->add('createdAt')
->add('firstName')
->add('lastName')
->add('password', PasswordType::class, [
// instead of being set onto the object directly,
// this is read and encoded in the controller
'mapped' => true,
'required' => false,
// 'always_empty' => false,
'constraints' => [
new NotBlank([
'message' => 'Veuillez entrer un mot de passe',
]),
new Length([
'min' => 6,
'minMessage' => 'Votre mot de passe doit contenir au moins {{ limit }} caractères.',
// max length allowed by Symfony for security reasons
'max' => 4096,
]),
]
])
->add('confirmPassword', PasswordType::class, [
// instead of being set onto the object directly,
// this is read and encoded in the controller
'mapped' => false,
'required' => false,
])
->add('status')
->add('publish', SubmitType::class, [
'label' => 'Publier',
'attr' => [
'class' => 'btn-success btn-block'
]
])
->add('draft', SubmitType::class, [
'label' => false,
'attr' => [
'class' => 'btn-warning mdi mdi-24px mdi-content-save'
]
])
->add('waiting', SubmitType::class, [
'label' => false,
'attr' => [
'class' => 'btn-info mdi mdi-24px mdi-inbox-arrow-down',
],
])
->add('delete', SubmitType::class, [
'label' => false,
'attr' => [
'class' => 'btn-danger mdi mdi-delete-forever-outline mdi-24px'
],
]);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => User::class,
'translation_domain' => 'forms'
]);
}
}
Je pensais avoir trouver ma réponse avec ' 'always_empty' => false,' mais non...
Merci par avance pour vos réponses.