[Symfony2] Rendu d'un formulaire imbriqué
Bonjour,
J'ai un formulaire qui fonctionne comme je le souhaite.
Maintenant je souhaite modifier le rendu mais ça coince....
Avec le code suivant pas de soucis....
Code:
{{ form_widget(form) }}
Voici le formtype que j'appelle depuis le contrôleur...
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| <?php
namespace Opengen\GeoBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
use Opengen\GeoBundle\Form\PaysHistoriqueInitialeType;
use Opengen\GeoBundle\Form\PaysHistoriqueNomType;
use Opengen\GeoBundle\Form\PaysHistoriqueNomClassementType;
class PaysType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('Initiales', 'collection', array('type' => new PaysHistoriqueInitialeType(), 'required' => true))
->add('Noms', 'collection', array('type' => new PaysHistoriqueNomType(), 'required' => true))
->add('NomClassements', 'collection', array('type' => new PaysHistoriqueNomClassementType(), 'required' => true))
;
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Opengen\GeoBundle\Entity\Pays',
'cascade_validation' => true,
));
}
public function getName()
{
return 'geo_paystype';
}
} |
Puis les sous-formulaires :
paysHistoriqueNom
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| <?php
namespace Opengen\GeoBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
class PaysHistoriqueNomType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('nom')
;
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Opengen\GeoBundle\Entity\PaysHistoriqueNom'
));
}
public function getName()
{
return 'opengen_geobundle_payshistoriquenomtype';
}
} |
Les autres sous-formulaires suivent la même logique que celui ci dessus.
Je pensais naïvement récupérer les widgets grâce à un code du genre
Code:
1 2 3 4 5 6
| {{ form_errors(form) }}
<div>
{{ form_errors(Initiales) }}
{{ form_widget(Initiales) }}
{{ form_label(Initiales, "Initiale du pays") }}
</div> |
Mais je me retrouve avec l'erreur suivante :
Citation:
Variable "Initiales" does not exist in OpengenGeoBundle:Geo:ajouter_pays.html.twig at line 28
Il ya un truc qui m'échappe non ?
Merci pour voter aide.