@@ -304,53 +304,10 @@ different than the one of your main form. Just specify both your themes:
304
304
305
305
{% form_theme form.a_child_form 'form/fields_child.html.twig' %}
306
306
307
- Form Theming in PHP
308
- -------------------
307
+ .. _referencing-base-form-blocks-twig-specific :
309
308
310
- When using PHP as a templating engine, the only method to customize a fragment
311
- is to create a new template file - this is similar to the second method used by
312
- Twig.
313
-
314
- The template file must be named after the fragment. You must create a ``integer_widget.html.php ``
315
- file in order to customize the ``integer_widget `` fragment.
316
-
317
- .. code-block :: html+php
318
-
319
- <!-- app/Resources/views/form/integer_widget.html.php -->
320
- <div class="integer_widget">
321
- <?php echo $view['form']->block(
322
- $form,
323
- 'form_widget_simple',
324
- array('type' => isset($type) ? $type : "number")
325
- ) ?>
326
- </div>
327
-
328
- Now that you've created the customized form template, you need to tell Symfony
329
- to use it. Inside the template where you're actually rendering your form,
330
- tell Symfony to use the theme via the ``setTheme() `` helper method::
331
-
332
- <?php $view['form']->setTheme($form, array(':form')); ?>
333
-
334
- <?php $view['form']->widget($form['age']) ?>
335
-
336
- When the ``form.age `` widget is rendered, Symfony will use the customized
337
- ``integer_widget.html.php `` template and the ``input `` tag will be wrapped in
338
- the ``div `` element.
339
-
340
- If you want to apply a theme to a specific child form, pass it to the ``setTheme() ``
341
- method::
342
-
343
- <?php $view['form']->setTheme($form['child'], ':form'); ?>
344
-
345
- .. note ::
346
-
347
- The ``:form `` syntax is based on the functional names for templates:
348
- ``Bundle:Directory ``. As the form directory lives in the
349
- ``app/Resources/views `` directory, the ``Bundle `` part is empty, resulting
350
- in ``:form ``.
351
-
352
- Referencing base Form Blocks (Twig specific)
353
- --------------------------------------------
309
+ Referencing base Form Blocks
310
+ ----------------------------
354
311
355
312
So far, to override a particular form block, the best method is to copy
356
313
the default block from `form_div_layout.html.twig `_, paste it into a different template,
@@ -406,16 +363,15 @@ the base block by using the ``parent()`` Twig function:
406
363
templating engine. You have to manually copy the content from the base block
407
364
to your new template file.
408
365
366
+ .. _twig :
367
+
409
368
Making Application-wide Customizations
410
369
--------------------------------------
411
370
412
371
If you'd like a certain form customization to be global to your application,
413
372
you can accomplish this by making the form customizations in an external
414
373
template and then importing it inside your application configuration.
415
374
416
- Twig
417
- ~~~~
418
-
419
375
By using the following configuration, any customized form blocks inside the
420
376
``form/fields.html.twig `` template will be used globally when a form is
421
377
rendered.
@@ -512,125 +468,6 @@ your template file rather than adding the template as a resource:
512
468
Note that the ``form `` variable in the above code is the form view variable
513
469
that you passed to your template.
514
470
515
- PHP
516
- ~~~
517
-
518
- By using the following configuration, any customized form fragments inside the
519
- ``app/Resources/views/Form `` folder will be used globally when a
520
- form is rendered.
521
-
522
- .. configuration-block ::
523
-
524
- .. code-block :: yaml
525
-
526
- # app/config/config.yml
527
- framework :
528
- templating :
529
- form :
530
- resources :
531
- - ' AppBundle:Form'
532
- # ...
533
-
534
- .. code-block :: xml
535
-
536
- <!-- app/config/config.xml -->
537
- <?xml version =" 1.0" encoding =" UTF-8" ?>
538
- <container xmlns =" http://symfony.com/schema/dic/services"
539
- xmlns : xsi =" http://www.w3.org/2001/XMLSchema-instance"
540
- xmlns : framework =" http://symfony.com/schema/dic/symfony"
541
- xsi : schemaLocation =" http://symfony.com/schema/dic/services
542
- http://symfony.com/schema/dic/services/services-1.0.xsd
543
- http://symfony.com/schema/dic/symfony
544
- http://symfony.com/schema/dic/symfony/symfony-1.0.xsd" >
545
-
546
- <framework : config >
547
- <framework : templating >
548
- <framework : form >
549
- <framework : resource >AppBundle:Form</framework : resource >
550
- </framework : form >
551
- </framework : templating >
552
- <!-- ... -->
553
- </framework : config >
554
- </container >
555
-
556
- .. code-block :: php
557
-
558
- // app/config/config.php
559
- // PHP
560
- $container->loadFromExtension('framework', array(
561
- 'templating' => array(
562
- 'form' => array(
563
- 'resources' => array(
564
- 'AppBundle:Form',
565
- ),
566
- ),
567
- ),
568
-
569
- // ...
570
- ));
571
-
572
- By default, the PHP engine uses a *div * layout when rendering forms. Some people,
573
- however, may prefer to render forms in a *table * layout. Use the ``FrameworkBundle:FormTable ``
574
- resource to use such a layout:
575
-
576
- .. configuration-block ::
577
-
578
- .. code-block :: yaml
579
-
580
- # app/config/config.yml
581
- framework :
582
- templating :
583
- form :
584
- resources :
585
- - ' FrameworkBundle:FormTable'
586
-
587
- .. code-block :: xml
588
-
589
- <!-- app/config/config.xml -->
590
- <?xml version =" 1.0" encoding =" UTF-8" ?>
591
- <container xmlns =" http://symfony.com/schema/dic/services"
592
- xmlns : xsi =" http://www.w3.org/2001/XMLSchema-instance"
593
- xmlns : framework =" http://symfony.com/schema/dic/symfony"
594
- xsi : schemaLocation =" http://symfony.com/schema/dic/services
595
- http://symfony.com/schema/dic/services/services-1.0.xsd
596
- http://symfony.com/schema/dic/symfony
597
- http://symfony.com/schema/dic/symfony/symfony-1.0.xsd" >
598
-
599
- <framework : config >
600
- <framework : templating >
601
- <framework : form >
602
- <resource >FrameworkBundle:FormTable</resource >
603
- </framework : form >
604
- </framework : templating >
605
- <!-- ... -->
606
- </framework : config >
607
- </container >
608
-
609
- .. code-block :: php
610
-
611
- // app/config/config.php
612
- $container->loadFromExtension('framework', array(
613
- 'templating' => array(
614
- 'form' => array(
615
- 'resources' => array(
616
- 'FrameworkBundle:FormTable',
617
- ),
618
- ),
619
- ),
620
-
621
- // ...
622
- ));
623
-
624
- If you only want to make the change in one template, add the following line to
625
- your template file rather than adding the template as a resource:
626
-
627
- .. code-block :: html+php
628
-
629
- <?php $view['form']->setTheme($form, array('FrameworkBundle:FormTable')); ?>
630
-
631
- Note that the ``$form `` variable in the above code is the form view variable
632
- that you passed to your template.
633
-
634
471
How to Customize an individual Field
635
472
------------------------------------
636
473
@@ -866,7 +703,7 @@ Adding a "Required" Asterisk to Field Labels
866
703
If you want to denote all of your required fields with a required asterisk (``* ``),
867
704
you can do this by customizing the ``form_label `` fragment.
868
705
869
- In Twig, if you're making the form customization inside the same template as your
706
+ If you're making the form customization inside the same template as your
870
707
form, modify the ``use `` tag and add the following:
871
708
872
709
.. code-block :: html+twig
@@ -881,7 +718,7 @@ form, modify the ``use`` tag and add the following:
881
718
{% endif %}
882
719
{% endblock %}
883
720
884
- In Twig, if you're making the form customization inside a separate template, use
721
+ If you're making the form customization inside a separate template, use
885
722
the following:
886
723
887
724
.. code-block :: html+twig
@@ -896,24 +733,6 @@ the following:
896
733
{% endif %}
897
734
{% endblock %}
898
735
899
- When using PHP as a templating engine you have to copy the content from the
900
- original template:
901
-
902
- .. code-block :: html+php
903
-
904
- <!-- form_label.html.php -->
905
-
906
- <!-- original content -->
907
- <?php if ($required) { $label_attr['class'] = trim((isset($label_attr['class']) ? $label_attr['class'] : '').' required'); } ?>
908
- <?php if (!$compound) { $label_attr['for'] = $id; } ?>
909
- <?php if (!$label) { $label = $view['form']->humanize($name); } ?>
910
- <label <?php foreach ($label_attr as $k => $v) { printf('%s="%s" ', $view->escape($k), $view->escape($v)); } ?>><?php echo $view->escape($view['translator']->trans($label, array(), $translation_domain)) ?></label>
911
-
912
- <!-- customization -->
913
- <?php if ($required) : ?>
914
- <span class="required" title="This field is required">*</span>
915
- <?php endif ?>
916
-
917
736
.. tip ::
918
737
919
738
See :ref: `form-theming-methods ` for how to apply this customization.
@@ -934,7 +753,7 @@ Adding "help" Messages
934
753
935
754
You can also customize your form widgets to have an optional "help" message.
936
755
937
- In Twig, if you're making the form customization inside the same template as your
756
+ If you're making the form customization inside the same template as your
938
757
form, modify the ``use `` tag and add the following:
939
758
940
759
.. code-block :: html+twig
@@ -949,7 +768,7 @@ form, modify the ``use`` tag and add the following:
949
768
{% endif %}
950
769
{% endblock %}
951
770
952
- In Twig, if you're making the form customization inside a separate template, use
771
+ If you're making the form customization inside a separate template, use
953
772
the following:
954
773
955
774
.. code-block :: html+twig
@@ -964,25 +783,6 @@ the following:
964
783
{% endif %}
965
784
{% endblock %}
966
785
967
- When using PHP as a templating engine you have to copy the content from the
968
- original template:
969
-
970
- .. code-block :: html+php
971
-
972
- <!-- form_widget_simple.html.php -->
973
-
974
- <!-- Original content -->
975
- <input
976
- type="<?php echo isset($type) ? $view->escape($type) : 'text' ?>"
977
- <?php if (!empty($value)): ?>value="<?php echo $view->escape($value) ?>"<?php endif ?>
978
- <?php echo $view['form']->block($form, 'widget_attributes') ?>
979
- />
980
-
981
- <!-- Customization -->
982
- <?php if (isset($help)) : ?>
983
- <span class="help"><?php echo $view->escape($help) ?></span>
984
- <?php endif ?>
985
-
986
786
To render a help message below a field, pass in a ``help `` variable:
987
787
988
788
.. code-block :: twig
0 commit comments