Tailwind CSS Form Theme ======================= Symfony provides a minimal form theme for `Tailwind CSS`_. Tailwind is a *utility first* CSS framework and provides *unlimited ways* to customize your forms. Tailwind has an official `form plugin`_ that provides a basic form reset that standardizes their look on all browsers. This form theme requires this plugin and adds a few basic tailwind classes so out of the box, your forms will look decent. Customization is almost always going to be required so this theme makes that easy. .. image:: /_images/form/tailwindcss-form.png :alt: An HTML form showing a range of form types styled using TailwindCSS. To use, first be sure you have installed and integrated `Tailwind CSS`_ and the `form plugin`_. Follow their respective documentation to install both packages. If you prefer to use the Tailwind theme on a form by form basis, include the ``form_theme`` tag in the templates where those forms are used: .. code-block:: html+twig {# ... #} {# this tag only applies to the forms defined in this template #} {% form_theme form 'tailwind_2_layout.html.twig' %} {% block body %}

User Sign Up:

{{ form(form) }} {% endblock %} Customization ------------- Customizing CSS classes is especially important for this theme. Twig Form Functions ~~~~~~~~~~~~~~~~~~~ You can customize classes of individual fields by setting some class options. .. code-block:: twig {{ form_row(form.title, { row_class: 'my row classes', label_class: 'my label classes', error_item_class: 'my error item classes', widget_class: 'my widget classes', widget_disabled_class: 'my disabled widget classes', widget_errors_class: 'my widget with error classes', }) }} When customizing the classes this way the defaults provided by the theme are *overridden* opposed to merged as is the case with other themes. This enables you to take full control of the classes without worrying about *undoing* the generic defaults the theme provides. Project Specific Form Layout ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If you have a generic Tailwind style for all your forms, you can create a custom form theme using the Tailwind CSS theme as a base. .. code-block:: twig {% use 'tailwind_2_layout.html.twig' %} {%- block form_row -%} {%- set row_class = row_class|default('my row classes') -%} {{- parent() -}} {%- endblock form_row -%} {%- block widget_attributes -%} {%- set widget_class = widget_class|default('my widget classes') -%} {%- set widget_disabled_class = widget_disabled_class|default('my disabled widget classes') -%} {%- set widget_errors_class = widget_errors_class|default('my widget with error classes') -%} {{- parent() -}} {%- endblock widget_attributes -%} {%- block form_label -%} {%- set label_class = label_class|default('my label classes') -%} {{- parent() -}} {%- endblock form_label -%} {%- block form_help -%} {%- set help_class = help_class|default('my label classes') -%} {{- parent() -}} {%- endblock form_help -%} {%- block form_errors -%} {%- set error_item_class = error_item_class|default('my error item classes') -%} {{- parent() -}} {%- endblock form_errors -%} .. _`Tailwind CSS`: https://tailwindcss.com .. _`form plugin`: https://github.com/tailwindlabs/tailwindcss-forms