From 39efc49da0c7658de9dc1c669586a5cba0d682aa Mon Sep 17 00:00:00 2001 From: Victor Berchet Date: Fri, 13 May 2011 11:00:39 +0200 Subject: [PATCH] [Form] Implement a fluid interface FormView --- .../Form/Extension/Core/Type/CheckboxType.php | 6 +++-- .../Form/Extension/Core/Type/ChoiceType.php | 14 +++++----- .../Extension/Core/Type/CollectionType.php | 6 +++-- .../Form/Extension/Core/Type/FieldType.php | 26 ++++++++++--------- .../Form/Extension/Core/Type/RadioType.php | 6 +++-- .../Form/Extension/Core/Type/TimeType.php | 6 +++-- src/Symfony/Component/Form/FormView.php | 20 ++++++++++++++ 7 files changed, 58 insertions(+), 26 deletions(-) diff --git a/src/Symfony/Component/Form/Extension/Core/Type/CheckboxType.php b/src/Symfony/Component/Form/Extension/Core/Type/CheckboxType.php index beb9f98e5a..807a2eacbe 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/CheckboxType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/CheckboxType.php @@ -27,8 +27,10 @@ class CheckboxType extends AbstractType public function buildView(FormView $view, FormInterface $form) { - $view->set('value', $form->getAttribute('value')); - $view->set('checked', (Boolean) $form->getData()); + $view + ->set('value', $form->getAttribute('value')) + ->set('checked', (Boolean) $form->getData()) + ; } public function getDefaultOptions(array $options) diff --git a/src/Symfony/Component/Form/Extension/Core/Type/ChoiceType.php b/src/Symfony/Component/Form/Extension/Core/Type/ChoiceType.php index 7adf981f25..7d3e44fcd6 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/ChoiceType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/ChoiceType.php @@ -89,12 +89,14 @@ class ChoiceType extends AbstractType $choices = $form->getAttribute('choice_list')->getChoices(); $preferred = array_flip($form->getAttribute('preferred_choices')); - $view->set('multiple', $form->getAttribute('multiple')); - $view->set('expanded', $form->getAttribute('expanded')); - $view->set('preferred_choices', array_intersect_key($choices, $preferred)); - $view->set('choices', array_diff_key($choices, $preferred)); - $view->set('separator', '-------------------'); - $view->set('empty_value', ''); + $view + ->set('multiple', $form->getAttribute('multiple')) + ->set('expanded', $form->getAttribute('expanded')) + ->set('preferred_choices', array_intersect_key($choices, $preferred)) + ->set('choices', array_diff_key($choices, $preferred)) + ->set('separator', '-------------------') + ->set('empty_value', '') + ; if ($view->get('multiple') && !$view->get('expanded')) { // Add "[]" to the name in case a select tag with multiple options is diff --git a/src/Symfony/Component/Form/Extension/Core/Type/CollectionType.php b/src/Symfony/Component/Form/Extension/Core/Type/CollectionType.php index 45dc7aa0f5..c98bc92657 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/CollectionType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/CollectionType.php @@ -38,8 +38,10 @@ class CollectionType extends AbstractType public function buildView(FormView $view, FormInterface $form) { - $view->set('allow_add', $form->getAttribute('allow_add')); - $view->set('allow_delete', $form->getAttribute('allow_delete')); + $view + ->set('allow_add', $form->getAttribute('allow_add')) + ->set('allow_delete', $form->getAttribute('allow_delete')) + ; } public function getDefaultOptions(array $options) diff --git a/src/Symfony/Component/Form/Extension/Core/Type/FieldType.php b/src/Symfony/Component/Form/Extension/Core/Type/FieldType.php index 963c9e2764..422dc05de7 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/FieldType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/FieldType.php @@ -64,18 +64,20 @@ class FieldType extends AbstractType $name = $form->getName(); } - $view->set('form', $view); - $view->set('id', $id); - $view->set('name', $name); - $view->set('errors', $form->getErrors()); - $view->set('value', $form->getClientData()); - $view->set('read_only', $form->isReadOnly()); - $view->set('required', $form->isRequired()); - $view->set('max_length', $form->getAttribute('max_length')); - $view->set('size', null); - $view->set('label', $form->getAttribute('label')); - $view->set('multipart', false); - $view->set('attr', array()); + $view + ->set('form', $view) + ->set('id', $id) + ->set('name', $name) + ->set('errors', $form->getErrors()) + ->set('value', $form->getClientData()) + ->set('read_only', $form->isReadOnly()) + ->set('required', $form->isRequired()) + ->set('max_length', $form->getAttribute('max_length')) + ->set('size', null) + ->set('label', $form->getAttribute('label')) + ->set('multipart', false) + ->set('attr', array()) + ; $types = array(); foreach (array_reverse((array) $form->getTypes()) as $type) { diff --git a/src/Symfony/Component/Form/Extension/Core/Type/RadioType.php b/src/Symfony/Component/Form/Extension/Core/Type/RadioType.php index baecb688b2..5234948fef 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/RadioType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/RadioType.php @@ -27,8 +27,10 @@ class RadioType extends AbstractType public function buildView(FormView $view, FormInterface $form) { - $view->set('value', $form->getAttribute('value')); - $view->set('checked', (Boolean) $form->getData()); + $view + ->set('value', $form->getAttribute('value')) + ->set('checked', (Boolean) $form->getData()) + ; if ($view->hasParent()) { $view->set('name', $view->getParent()->get('name')); diff --git a/src/Symfony/Component/Form/Extension/Core/Type/TimeType.php b/src/Symfony/Component/Form/Extension/Core/Type/TimeType.php index 310f1c4254..392417ca5d 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/TimeType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/TimeType.php @@ -73,8 +73,10 @@ class TimeType extends AbstractType public function buildView(FormView $view, FormInterface $form) { - $view->set('widget', $form->getAttribute('widget')); - $view->set('with_seconds', $form->getAttribute('with_seconds')); + $view + ->set('widget', $form->getAttribute('widget')) + ->set('with_seconds', $form->getAttribute('with_seconds')) + ; } public function getDefaultOptions(array $options) diff --git a/src/Symfony/Component/Form/FormView.php b/src/Symfony/Component/Form/FormView.php index cbc2380bb0..1919f22ba8 100644 --- a/src/Symfony/Component/Form/FormView.php +++ b/src/Symfony/Component/Form/FormView.php @@ -38,10 +38,14 @@ class FormView implements \ArrayAccess, \IteratorAggregate, \Countable /** * @param string $name * @param mixed $value + * + * @return FormView The current view */ public function set($name, $value) { $this->vars[$name] = $value; + + return $this; } /** @@ -91,10 +95,14 @@ class FormView implements \ArrayAccess, \IteratorAggregate, \Countable * * @param string $name The name of the attribute * @param string $value The value + * + * @return FormView The current view */ public function setAttribute($name, $value) { $this->vars['attr'][$name] = $value; + + return $this; } /** @@ -109,20 +117,28 @@ class FormView implements \ArrayAccess, \IteratorAggregate, \Countable /** * Marks the attached form as rendered + * + * @return FormView The current view */ public function setRendered() { $this->rendered = true; + + return $this; } /** * Sets the parent view. * * @param FormView $parent The parent view + * + * @return FormView The current view */ public function setParent(FormView $parent = null) { $this->parent = $parent; + + return $this; } /** @@ -149,10 +165,14 @@ class FormView implements \ArrayAccess, \IteratorAggregate, \Countable * Sets the children view. * * @param array $children The children as instances of FormView + * + * @return FormView The current view */ public function setChildren(array $children) { $this->children = $children; + + return $this; } /**