1 pièce(s) jointe(s)
Thème pour mon formulaire en CollectionType
Bonjour !
J'affiche mes formulaires symfony avec un style (bootstrap) particulier et j'ai trouvé cette partie de la documentation : http://symfony.com/doc/current/form/...tion-prototype qui m'a aidé a faire en sorte à ce que quand j'ai une collection d'éléments que j'appuie sur "ajouter un élément" (méthode jQuery de cette partie de la doc : http://symfony.com/doc/current/form/...llections.html) ca me met pas le paté tout entier mais avec le style qu'il faut.
En code ça donne ça :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| {% block form_row %}
<div class="row">
<div class="form-group{% if (not compound or force_error|default(false)) and not valid %} has-error{% endif %}">
<div class="col-lg-4 col-md-4 col-sm-6 col-xs-12">
{{- form_label(form, "", {'label_attr': {'class': 'pull-right'}}) -}}
</div>
<div class="col-lg-4 col-md-4 col-sm-6 col-xs-12">
{{- form_widget(form) -}}
</div>
<div class="col-lg-4 col-md-4 col-sm-6 col-xs-12">
{{- form_errors(form) -}}
</div>
</div>
</div>
<br/>
{% endblock %} |
Le problème que j'ai c'est que maintenant chaque fois que j'ai une collection dans une collection, j'ai la première collection qui s'affiche bien mais la deuxième se trouvant dans form_widget me remet la même structure j'ai donc une récursivité dans les form_widget (Oui c'est difficile à expliquer ....).
En gros ça donne ça :
Code:
1 2 3 4
| <div class="row">
<div id="familyMembersList" data-prototype="{{ form_widget(form.childsFamily.vars.prototype)|e('html_attr') }}">
</div>
</div> |
Cette partie du HTML va apeller ce formulaire la :
Code:
1 2 3 4 5 6 7 8 9 10 11
| public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('childsFamily', CollectionType::class, array(
'entry_type' => RelationshipType::class,
'allow_add' => true
));
}
public function getBlockPrefix()
{
return 'AddChildStep3'; |
Qui à son tour va apeller :
Code:
1 2 3 4 5 6 7 8 9
| public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('relRole', EntityType::class, array(
'class' => 'VSCrmBundle:RelRole'
))
//->add('sourceId', PersonChildType::class)
->add('destinationId', PersonRelationshipType::class);
} |
Qui a son tour va appeler 2 collections :
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
| public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('firstName')
->add('lastName')
->add('bornOn', BirthdayType::class, array(
'required' => false
))
->add('familySituation', ChoiceType::class, array(
'choices' => array(
'Single' => 'SINGLE',
'Married' => 'MARRIED',
'Other' => 'OTHER'
)
))
->add('profession')
->add('addresses', CollectionType::class, array(
'entry_type' => AddressType::class,
'allow_add' => true,
'allow_delete' => true
))
->add('medias', CollectionType::class, array(
'entry_type' => MediaType::class,
'allow_add' => true,
'allow_delete' => true
)); |
et en images ça donne ça :
Pièce jointe 244660
j'ai trouvé le nom du block en question a customiser dans
Citation:
profiler->forms->my form->vars->unique_block_prefix = _AddChildStep3_childsFamily
et j'ai essayé de faire ceci :
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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
| {% block _AddChildStep3_childsFamily_entry_row %}
<div class="row">
<div class="form-group{% if (not compound or force_error|default(false)) and not valid %} has-error{% endif %}">
<div class="col-lg-4 col-md-4 col-sm-6 col-xs-12">
{{- form_label(form.relRole, "", {'label_attr': {'class': 'pull-right'}}) -}}
</div>
<div class="col-lg-4 col-md-4 col-sm-6 col-xs-12">
{{- form_widget(form.relRole) -}}
</div>
<div class="col-lg-4 col-md-4 col-sm-6 col-xs-12">
{{- form_errors(form.relRole) -}}
</div>
</div>
<br/>
<div class="form-group{% if (not compound or force_error|default(false)) and not valid %} has-error{% endif %}">
<div class="col-lg-4 col-md-4 col-sm-6 col-xs-12">
{{- form_label(form.destinationId.firstName, "", {'label_attr': {'class': 'pull-right'}}) -}}
</div>
<div class="col-lg-4 col-md-4 col-sm-6 col-xs-12">
{{- form_widget(form.destinationId.firstName) -}}
</div>
<div class="col-lg-4 col-md-4 col-sm-6 col-xs-12">
{{- form_errors(form.destinationId.firstName) -}}
</div>
</div>
<br/>
<div class="form-group{% if (not compound or force_error|default(false)) and not valid %} has-error{% endif %}">
<div class="col-lg-4 col-md-4 col-sm-6 col-xs-12">
{{- form_label(form.destinationId.lastName, "", {'label_attr': {'class': 'pull-right'}}) -}}
</div>
<div class="col-lg-4 col-md-4 col-sm-6 col-xs-12">
{{- form_widget(form.destinationId.lastName) -}}
</div>
<div class="col-lg-4 col-md-4 col-sm-6 col-xs-12">
{{- form_errors(form.destinationId.lastName) -}}
</div>
</div>
<br/>
<div class="form-group{% if (not compound or force_error|default(false)) and not valid %} has-error{% endif %}">
<div class="col-lg-4 col-md-4 col-sm-6 col-xs-12">
{{- form_label(form.destinationId.bornOn, "", {'label_attr': {'class': 'pull-right'}}) -}}
</div>
<div class="col-lg-4 col-md-4 col-sm-6 col-xs-12">
{{- form_widget(form.destinationId.bornOn) -}}
</div>
<div class="col-lg-4 col-md-4 col-sm-6 col-xs-12">
{{- form_errors(form.destinationId.bornOn) -}}
</div>
</div>
<br/>
<div class="form-group{% if (not compound or force_error|default(false)) and not valid %} has-error{% endif %}">
<div class="col-lg-4 col-md-4 col-sm-6 col-xs-12">
{{- form_label(form.destinationId.profession, "", {'label_attr': {'class': 'pull-right'}}) -}}
</div>
<div class="col-lg-4 col-md-4 col-sm-6 col-xs-12">
{{- form_widget(form.destinationId.profession) -}}
</div>
<div class="col-lg-4 col-md-4 col-sm-6 col-xs-12">
{{- form_errors(form.destinationId.profession) -}}
</div>
</div>
<br/>
</div>
{% endblock %} |
en ajoutant ceci en en-tête a mon template :
Code:
1 2 3
| {% form_theme form 'VSCrmBundle:CustomForms:custom_form_row.html.twig' %}
{% form_theme form 'VSCrmBundle:CustomForms:custom_responsible_collection.html.twig' %} |
(j'ai aussi proposé la technique proposée dans la documentation avec form with ['form1.html.twig', 'form2.html.twig'])
Mais cela ne marche pas.... Pouvez-vous m'aider ?
Merci !
PS : petite précision : lorsque je regarde dans le profiler/twig je ne vois même pas l'utilisation du block que j'ai redefini qui s'intitule :
{% block _AddChildStep3_childsFamily_entry_row %}... Pourtant si je comprends bien c'est ça que je dois mettre comme titre du block customisé ?!