Bonjour,

Je viens vers vous car un problème me laisse perplexe.

J'utilise FOSUserBundle, tous se qui concerne l'installation puis la modification + l'ajout de fonction marche.

Mais lorsque je veux éditer un utilisateur côter admin dont le champs Password requested at et expiredAt sont à null , le formulaire me remplie ces champs avec une date alors qu'il sont null. :(

Voici ci-dessous mon fichier UserType.php générer avec la commande generate:form :

<?php
namespace Portfolio\UserBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
use Portfolio\UserBundle\Entity\User;
use Symfony\Component\Form\FormInterface;
class UserType extends AbstractType
{
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('last_name' , 'text')
            ->add('first_name' , 'text')
            ->add('username' , 'text')
            ->add('usernameCanonical', 'text')
            ->add('email' , 'text')
            ->add('emailCanonical' , 'text')
            ->add('enabled' , 'checkbox', array(
                'label' => 'enabled',
                'required' => false,
            ))
            ->add('salt' , 'text')
            ->add('password' , 'text')
            ->add('lastLogin' , 'datetime')
            ->add('locked' , 'checkbox')
            ->add('expired' , 'checkbox')
            ->add('expiresAt' , 'datetime')
            ->add('confirmationToken' , 'text')
            ->add('passwordRequestedAt', 'datetime')
            ->add('roles',
                'bootstrap_collection',
                array(
                    'allow_add' => true,
                    'allow_delete' => true,
                    'add_button_text' => 'ajouter un roles',
                    'delete_button_text' => '<i class="fa fa-trash-o"></i>',
                    'sub_widget_col' => 9,
                    'button_col' => 3
                )
            )
            ->add('credentialsExpired' ,'checkbox')
            ->add('credentialsExpireAt','datetime')
            ->add('lastActivity' ,'datetime')
            ->add('groups',
                'bootstrap_collection',
                array(
                    'allow_add' => true,
                    'allow_delete' => true,
                    'add_button_text' => 'ajouter un group',
                    'delete_button_text' => '<i class="fa fa-trash-o"></i>',
                    'sub_widget_col' => 9,
                    'button_col' => 3
                )
            )
        ;
    }

    /**
     * @param OptionsResolverInterface $resolver
     */
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'Portfolio\UserBundle\Entity\User',
            'empty_data' => function (FormInterface $form) {
                return new User($form->get('title')->getData());
            },
        ));
    }
    /**
     * @return string
     */
    public function getName()
    {
        return 'portfolio_userbundle_user';
    }
}

Avec un var_dump j'ai bien vérifier et mais champs date sont bien à null.

Quelqu'un aurais eu se problème ou peut il m'expliquer si cela viens de symfony qui les remplie par default?

Merci d'avance pour votre aide.

2 réponses


Vallyan
Réponse acceptée

Il suffit d'ajouter l'option 'empty_value' => '' dans ton array d'options:

$builder->add('expiresAt', 'datetime', array(
    'empty_value' => '',
));
ksta
Auteur

Salut,

Désoler du temps de réponse :(, j'étais tellement dans mes recherches que je suis pas revenu sur le forum :(.

Sa marche nikel :)

Je te remercie pour ton aide et encore désoler.