Bonjour, j'ai crée un formulaire qui me permet de saisir une annonce pour une maison(MaisonType), vu que dans l'annonce nous avons plusieurs type de maison, alors j'ai imbriqué le fomulaire TypeMaisonType dans MaisonType et sa focntionne bien.
Le souci est que lorsque j'essaye d'utilisé l'option "label" sur les autres champs de mon formulaire, exemple le champ nombrepiece, j'ai cette erreur :

Expected argument of type "string or Symfony\Component\Form\FormTypeInterface", "array" given

Voici le code:
<?php

namespace Exia\PromotionBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;

class MaisonType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder

->add('nombrepiece', array( 'label'=> 'Nombre de pièces :'))
->add('annonce', new AnnonceType())
->add('surface')
->add('energie')
->add('description')
->add('typeMaison', 'entity', array('class' => 'ExiaPromotionBundle:TypeMaison',
'property' => 'nom'))

->add('prix')

;
}

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Exia\PromotionBundle\Entity\Maison'
));
}

public function getName()
{
return 'exia_promotionbundle_maisontype';
}
}

2 réponses


devict
Réponse acceptée

Salut ! C'est tout simplement parce que tu dois mettre

->add('nombrepiece', 'number', array( 'label'=> 'Nombre de pièces :'))

. Le deuxième argument étant réservé au type de l'input. Si tu pouvais utiliser l'option "code" du forum au lieu de copier/coller ton code ça serait cool :)

prince224
Auteur
Réponse acceptée

Merci pour la réponse, même je l'avais trouvé entre temps. Pour l'affichage de mon code j'y pensera ;)