Unmapped Form Fields in Symfony: Difference between revisions

From Littledamien Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
[[Category:Symfony]] [[Category:CMS]] [[Category:Web Development]]
== Objective ==
== Objective ==


Line 8: Line 9:


== Form Class ==
== Form Class ==
* The first two form fields added to the form builder correspond to properties of the entity class.
* The `next` field does not correspond to an entity class property.
** `mapped => false` marks this as an unmapped field.
** `placeholder => null` removes an option inserted by Symfony that explicitly sets the choice to "no choice".
** `empty_data` marks the value that will be submitted if none of the choices in the form are selected.
** `expanded => true` causes the "choice" field type to be rendered as a list of radio buttons.


<syntaxhighlight lang="php" highlight="13,24">
<syntaxhighlight lang="php" highlight="13,24">

Revision as of 06:52, 19 February 2015

Objective

Use a form class to build out a form to edit an entity.

Add fields to the form to control navigation after submitting the form, for example.

These extra fields don't have equivalents in the entity class. It cannot be used to inspect their values in the submitted form data.

Form Class

  • The first two form fields added to the form builder correspond to properties of the entity class.
  • The next field does not correspond to an entity class property.
    • mapped => false marks this as an unmapped field.
    • placeholder => null removes an option inserted by Symfony that explicitly sets the choice to "no choice".
    • empty_data marks the value that will be submitted if none of the choices in the form are selected.
    • expanded => true causes the "choice" field type to be rendered as a list of radio buttons.
class InvoiceType extends AbstractType 
{
	public function buildForm(FormBuilderInterface $builder, array $options) 
	{
		$builder
			->add('number', 'integer', array(
				'label' => 'Invoice Number',
			))
			->add('amount', 'money', array(
				'currency'=> 'USD',
			))
			// ...
			->add('next', 'next_nav_choice', array(
				'label' => 'After saving the invoice go to:',
				'placeholder' => null,
				'required' => false,
				'choices' => array(
					'list' => 'invoice listings',
					'details' => 'view the invoice',
					'add' => 'add another invoice',
					),
				'empty_data' => array('list'),
				'expanded' => true,
				'mapped' => false,
			))
			->add('save', 'submit');
	}