Bonjour à la communauté
Je souhaite savoir s'il est possible (si c'est une bonne pratique) de créer plusieurs FormType pour la même entité. L'idée est de faire des update sur les attributs de l'entités séparement. Par exemple, j'ai une entité user avec les attributs name, username, experience, password etc.. Je souhaite proposer un formulaire avec un champ pour créer et modifier l'attribut experience Puis-je créer un UserType.php et un ExperienceType.php pour agir sur la même entité User?

Il est possible certes de créer une autre entity Experience et la reliée à l'entité user avec une relation OneToOne... Selon vous, quelle est la bonne pratique coté BD? avoir une table obèse ou plusieurs plusieurs tables associées.
J'attends vos reponses.
Richardement

2 réponses


Hello,

Oui tu peux,

Mais tu peux aussi simplement faire dans ton controlleur

$form  = $this->createForm(UserType::class,$user,['fields' => ['experience','unAutre']);

Dans ton formType :


    /**
     * @param OptionsResolver $resolver
     */
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'AppBundle\Entity\User',
            'fields' => false,
        ));
    }
/**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        if($options['fields']){
           foreach($options['fields'] as $field){
                       $builder->add($field);
           }
        } else {
              // Touts les champs de la classe user que tu veux
        }

    }

Cette exemple est pour sf3, si tu utilise Sf2, il faudra adapter ton code.

Bonjour @sohrab, J'ai trouvé une solution plus facile qui est l'héritage des formulaire.
merci