@@ -307,10 +307,66 @@ Fragment Naming for Collections
307
307
...............................
308
308
309
309
When using a :doc: `collection of forms </form/form_collections >`, the fragment
310
- of each collection item follows the pattern ``_field-name_entry_part ``. For
311
- example, if your form field is named ``tasks ``, the fragment for each task will
312
- be named ``_tasks_entry `` (``_tasks_entry_row ``, ``_tasks_entry_label ``,
313
- ``_tasks_entry_widget ``, ``_tasks_entry_error ``)
310
+ of each collection item follows a predefined pattern. For example, consider the
311
+ following complex example where a ``TaskManagerType `` has a collection of
312
+ ``TaskListType `` which in turn has a collection of ``TaskType ``::
313
+
314
+ class TaskManagerType extends AbstractType
315
+ {
316
+ public function buildForm(FormBuilderInterface $builder, array $options = array())
317
+ {
318
+ // ...
319
+ $builder->add('taskLists', CollectionType::class, array(
320
+ 'entry_type' => TaskListType::class,
321
+ 'block_name' => 'task_lists',
322
+ ));
323
+ }
324
+ }
325
+
326
+ class TaskListType extends AbstractType
327
+ {
328
+ public function buildForm(FormBuilderInterface $builder, array $options = array())
329
+ {
330
+ // ...
331
+ $builder->add('tasks', CollectionType::class, array(
332
+ 'entry_type' => TaskType::class,
333
+ ));
334
+ }
335
+ }
336
+
337
+ class TaskType
338
+ {
339
+ public function buildForm(FormBuilderInterface $builder, array $options = array())
340
+ {
341
+ $builder->add('name');
342
+ // ...
343
+ }
344
+ }
345
+
346
+ Then you get all the following customizable blocks (where ``* `` can be replaced
347
+ by ``row ``, ``widget ``, ``label ``, or ``help ``):
348
+
349
+ .. code-block :: twig
350
+
351
+ {% block _task_manager_task_lists_* %}
352
+ {# the collection field of TaskManager #}
353
+ {% endblock %}
354
+
355
+ {% block _task_manager_task_lists_entry_* %}
356
+ {# the inner TaskListType #}
357
+ {% endblock %}
358
+
359
+ {% block _task_manager_task_lists_entry_tasks_* %}
360
+ {# the collection field of TaskListType #}
361
+ {% endblock %}
362
+
363
+ {% block _task_manager_task_lists_entry_tasks_entry_* %}
364
+ {# the inner TaskType #}
365
+ {% endblock %}
366
+
367
+ {% block _task_manager_task_lists_entry_tasks_entry_name_* %}
368
+ {# the field of TaskType #}
369
+ {% endblock %}
314
370
315
371
Template Fragment Inheritance
316
372
.............................
0 commit comments