[Form] change FormView::setVar,getVar,getVars,hasVar to set,get,all,has

[Form] Fixed {get,set,has}Var references in templating php

[Form] Added getVars to FormView to ease usage in Twig. Also added some phpdoc and cleaned up the get method by adding a default value

[Form] Fix

[Form] Delete file generated by test
This commit is contained in:
Henrik Bjørnskov 2011-04-14 17:59:41 +02:00
parent 4f1ae660fa
commit e687685f98
29 changed files with 131 additions and 104 deletions

View File

@ -160,7 +160,7 @@ class FormExtension extends \Twig_Extension
protected function render(FormView $view, $section, array $variables = array(), array $resources = null)
{
$templates = $this->getTemplates($view, $resources);
$blocks = $view->getVar('types');
$blocks = $view->get('types');
foreach ($blocks as &$block) {
$block = $block.'__'.$section;
@ -169,7 +169,7 @@ class FormExtension extends \Twig_Extension
$view->setRendered(true);
}
return $templates[$block]->renderBlock($block, array_merge($view->getVars(), $variables));
return $templates[$block]->renderBlock($block, array_merge($view->all(), $variables));
}
}

View File

@ -1 +1 @@
<?php echo $view['form']->render('form', 'widget', $renderer->getVars()); ?>
<?php echo $view['form']->render('form', 'widget', $renderer->all()); ?>

View File

@ -1 +1 @@
<?php if ($form->getVar('multipart')): ?>enctype="multipart/form-data"<?php endif ?>
<?php if ($form->get('multipart')): ?>enctype="multipart/form-data"<?php endif ?>

View File

@ -2,11 +2,11 @@
<input type="file"
id="<?php echo $view->escape($form['file']->getVar('id')) ?>"
name="<?php echo $view->escape($form['file']->getVar('name')) ?>"
<?php if ($form['file']->getVar('disabled')): ?>disabled="disabled"<?php endif ?>
<?php if ($form['file']->getVar('required')): ?>required="required"<?php endif ?>
<?php if ($form['file']->getVar('class')): ?>class="<?php echo $form['file']->getVar('class') ?>"<?php endif ?>
<?php if ($form['file']->get('disabled')): ?>disabled="disabled"<?php endif ?>
<?php if ($form['file']->get('required')): ?>required="required"<?php endif ?>
<?php if ($form['file']->get('class')): ?>class="<?php echo $form['file']->get('class') ?>"<?php endif ?>
/>
<?php echo $view['form']->widget($form['token']) ?>
<?php echo $view['form']->widget($form['name']) ?>
</div>
</div>

View File

@ -98,7 +98,7 @@ class FormHelper extends Helper
protected function renderSection(FormView $view, $section, array $variables = array())
{
$template = null;
$blocks = $view->getVar('types');
$blocks = $view->get('types');
foreach ($blocks as &$block) {
$block = $block.'_'.$section;
@ -117,7 +117,7 @@ class FormHelper extends Helper
$view->setRendered(true);
}
return $this->render($template, array_merge($view->getVars(), $variables));
return $this->render($template, array_merge($view->all(), $variables));
}
public function render($template, array $variables = array())

View File

@ -36,30 +36,56 @@ class FormView implements \ArrayAccess, \IteratorAggregate
*/
private $rendered = false;
public function setVar($name, $value)
/**
* @param string $name
* @param mixed $value
*/
public function set($name, $value)
{
$this->vars[$name] = $value;
}
public function hasVar($name)
/**
* @param $name
* @return Boolean
*/
public function has($name)
{
return array_key_exists($name, $this->vars);
}
public function getVar($name)
/**
* @param $name
* @param $default
* @return mixed
*/
public function get($name, $default = null)
{
if (!isset($this->vars[$name])) {
return null;
if (false === $this->has($name)) {
return $default;
}
return $this->vars[$name];
}
public function getVars()
/**
* @return array
*/
public function all()
{
return $this->vars;
}
/**
* Alias of all so it is possible to do `form.vars.foo`
*
* @return array
*/
public function getVars()
{
return $this->all();
}
public function setAttribute($name, $value)
{
$this->vars['attr'][$name] = $value;

View File

@ -26,8 +26,8 @@ class CheckboxType extends AbstractType
public function buildView(FormView $view, FormInterface $form)
{
$view->setVar('value', $form->getAttribute('value'));
$view->setVar('checked', (bool)$form->getData());
$view->set('value', $form->getAttribute('value'));
$view->set('checked', (bool)$form->getData());
}
public function getDefaultOptions(array $options)
@ -46,4 +46,4 @@ class CheckboxType extends AbstractType
{
return 'checkbox';
}
}
}

View File

@ -81,18 +81,18 @@ class ChoiceType extends AbstractType
$choices = $form->getAttribute('choice_list')->getChoices();
$preferred = array_flip($form->getAttribute('preferred_choices'));
$view->setVar('multiple', $form->getAttribute('multiple'));
$view->setVar('expanded', $form->getAttribute('expanded'));
$view->setVar('preferred_choices', array_intersect_key($choices, $preferred));
$view->setVar('choices', array_diff_key($choices, $preferred));
$view->setVar('separator', '-------------------');
$view->setVar('empty_value', '');
$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', '');
if ($view->getVar('multiple') && !$view->getVar('expanded')) {
if ($view->get('multiple') && !$view->get('expanded')) {
// Add "[]" to the name in case a select tag with multiple options is
// displayed. Otherwise only one of the selected options is sent in the
// POST request.
$view->setVar('name', $view->getVar('name').'[]');
$view->set('name', $view->get('name').'[]');
}
}
@ -121,4 +121,4 @@ class ChoiceType extends AbstractType
{
return 'choice';
}
}
}

View File

@ -80,7 +80,7 @@ class DateType extends AbstractType
public function buildViewBottomUp(FormView $view, FormInterface $form)
{
$view->setVar('widget', $form->getAttribute('widget'));
$view->set('widget', $form->getAttribute('widget'));
if ($view->hasChildren()) {
@ -95,7 +95,7 @@ class DateType extends AbstractType
$pattern = '{{ year }}-{{ month }}-{{ day }}';
}
$view->setVar('date_pattern', $pattern);
$view->set('date_pattern', $pattern);
}
}
@ -127,4 +127,4 @@ class DateType extends AbstractType
{
return 'date';
}
}
}

View File

@ -69,8 +69,8 @@ class FieldType extends AbstractType
public function buildView(FormView $view, FormInterface $form)
{
if ($view->hasParent()) {
$parentId = $view->getParent()->getVar('id');
$parentName = $view->getParent()->getVar('name');
$parentId = $view->getParent()->get('id');
$parentName = $view->getParent()->get('name');
$id = sprintf('%s_%s', $parentId, $form->getName());
$name = sprintf('%s[%s]', $parentName, $form->getName());
} else {
@ -78,25 +78,26 @@ class FieldType extends AbstractType
$name = $form->getName();
}
$view->setVar('form', $view);
$view->setVar('id', $id);
$view->setVar('name', $name);
$view->setVar('errors', $form->getErrors());
$view->setVar('value', $form->getClientData());
$view->setVar('read_only', $form->isReadOnly());
$view->setVar('required', $form->isRequired());
$view->setVar('class', null);
$view->setVar('max_length', $form->getAttribute('max_length'));
$view->setVar('size', null);
$view->setVar('label', $form->getAttribute('label'));
$view->setVar('multipart', false);
$view->setVar('attr', array());
$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('class', null);
$view->set('max_length', $form->getAttribute('max_length'));
$view->set('size', null);
$view->set('label', ucfirst(strtolower(str_replace('_', ' ', $form->getName()))));
$view->set('label', $form->getAttribute('label'));
$view->set('multipart', false);
$view->set('attr', array());
$types = array();
foreach (array_reverse((array) $form->getTypes()) as $type) {
$types[] = $type->getName();
}
$view->setVar('types', $types);
$view->set('types', $types);
}
public function getDefaultOptions(array $options)
@ -147,4 +148,4 @@ class FieldType extends AbstractType
{
return ucfirst(strtolower(str_replace('_', ' ', $text)));
}
}
}

View File

@ -50,8 +50,8 @@ class FileType extends AbstractType
public function buildViewBottomUp(FormView $view, FormInterface $form)
{
$view->setVar('multipart', true);
$view['file']->setVar('type', 'file');
$view->set('multipart', true);
$view['file']->set('type', 'file');
}
public function getDefaultOptions(array $options)

View File

@ -41,13 +41,13 @@ class FormType extends AbstractType
$multipart = false;
foreach ($view as $child) {
if ($child->getVar('multipart')) {
if ($child->get('multipart')) {
$multipart = true;
break;
}
}
$view->setVar('multipart', $multipart);
$view->set('multipart', $multipart);
}
public function getDefaultOptions(array $options)
@ -79,4 +79,4 @@ class FormType extends AbstractType
{
return 'form';
}
}
}

View File

@ -28,7 +28,7 @@ class MoneyType extends AbstractType
public function buildView(FormView $view, FormInterface $form)
{
$view->setVar('money_pattern', self::getPattern($form->getAttribute('currency')));
$view->set('money_pattern', self::getPattern($form->getAttribute('currency')));
}
public function getDefaultOptions(array $options)
@ -90,4 +90,4 @@ class MoneyType extends AbstractType
return self::$patterns[\Locale::getDefault()];
}
}
}

View File

@ -25,7 +25,7 @@ class PasswordType extends AbstractType
public function buildView(FormView $view, FormInterface $form)
{
if ($form->getAttribute('always_empty') || !$form->isBound()) {
$view->setVar('value', '');
$view->set('value', '');
}
}
@ -45,4 +45,4 @@ class PasswordType extends AbstractType
{
return 'password';
}
}
}

View File

@ -26,11 +26,11 @@ class RadioType extends AbstractType
public function buildView(FormView $view, FormInterface $form)
{
$view->setVar('value', $form->getAttribute('value'));
$view->setVar('checked', (bool)$form->getData());
$view->set('value', $form->getAttribute('value'));
$view->set('checked', (bool)$form->getData());
if ($view->hasParent()) {
$view->setVar('name', $view->getParent()->getVar('name'));
$view->set('name', $view->getParent()->get('name'));
}
}
@ -50,4 +50,4 @@ class RadioType extends AbstractType
{
return 'radio';
}
}
}

View File

@ -24,7 +24,7 @@ class TextType extends AbstractType
public function buildView(FormView $view, FormInterface $form)
{
$view->setVar('max_length', $form->getAttribute('max_length'));
$view->set('max_length', $form->getAttribute('max_length'));
}
public function getParent(array $options)
@ -36,4 +36,4 @@ class TextType extends AbstractType
{
return 'text';
}
}
}

View File

@ -73,8 +73,8 @@ class TimeType extends AbstractType
public function buildView(FormView $view, FormInterface $form)
{
$view->setVar('widget', $form->getAttribute('widget'));
$view->setVar('with_seconds', $form->getAttribute('with_seconds'));
$view->set('widget', $form->getAttribute('widget'));
$view->set('with_seconds', $form->getAttribute('with_seconds'));
}
public function getDefaultOptions(array $options)
@ -100,4 +100,4 @@ class TimeType extends AbstractType
{
return 'time';
}
}
}

View File

@ -20,7 +20,7 @@ class CheckboxTypeTest extends TestCase
$form = $this->factory->create('checkbox', 'name', array('value' => 'foobar'));
$view = $form->createView();
$this->assertEquals('foobar', $view->getVar('value'));
$this->assertEquals('foobar', $view->get('value'));
}
public function testCheckedIfDataTrue()
@ -29,7 +29,7 @@ class CheckboxTypeTest extends TestCase
$form->setData(true);
$view = $form->createView();
$this->assertTrue($view->getVar('checked'));
$this->assertTrue($view->get('checked'));
}
public function testNotCheckedIfDataFalse()
@ -38,6 +38,6 @@ class CheckboxTypeTest extends TestCase
$form->setData(false);
$view = $form->createView();
$this->assertFalse($view->getVar('checked'));
$this->assertFalse($view->get('checked'));
}
}

View File

@ -224,7 +224,7 @@ class ChoiceTypeTest extends TestCase
));
$view = $form->createView();
$this->assertTrue($view->getVar('multiple'));
$this->assertTrue($view->get('multiple'));
}
public function testPassExpandedToView()
@ -235,7 +235,7 @@ class ChoiceTypeTest extends TestCase
));
$view = $form->createView();
$this->assertTrue($view->getVar('expanded'));
$this->assertTrue($view->get('expanded'));
}
public function testPassChoicesToView()
@ -246,7 +246,7 @@ class ChoiceTypeTest extends TestCase
));
$view = $form->createView();
$this->assertSame($choices, $view->getVar('choices'));
$this->assertSame($choices, $view->get('choices'));
}
public function testPassPreferredChoicesToView()
@ -258,8 +258,8 @@ class ChoiceTypeTest extends TestCase
));
$view = $form->createView();
$this->assertSame(array('a' => 'A', 'c' => 'C'), $view->getVar('choices'));
$this->assertSame(array('b' => 'B', 'd' => 'D'), $view->getVar('preferred_choices'));
$this->assertSame(array('a' => 'A', 'c' => 'C'), $view->get('choices'));
$this->assertSame(array('b' => 'B', 'd' => 'D'), $view->get('preferred_choices'));
}
public function testAdjustNameForMultipleNonExpanded()
@ -271,6 +271,6 @@ class ChoiceTypeTest extends TestCase
));
$view = $form->createView();
$this->assertSame('name[]', $view->getVar('name'));
$this->assertSame('name[]', $view->get('name'));
}
}

View File

@ -24,7 +24,7 @@ class CountryTypeTest extends TestCase
$form = $this->factory->create('country');
$view = $form->createView();
$choices = $view->getVar('choices');
$choices = $view->get('choices');
$this->assertArrayHasKey('DE', $choices);
$this->assertEquals('Deutschland', $choices['DE']);
@ -42,7 +42,7 @@ class CountryTypeTest extends TestCase
{
$form = $this->factory->create('country', 'country');
$view = $form->createView();
$choices = $view->getVar('choices');
$choices = $view->get('choices');
$this->assertArrayNotHasKey('ZZ', $choices);
}

View File

@ -434,7 +434,7 @@ class DateTypeTest extends LocalizedTestCase
$form = $this->factory->create('date');
$view = $form->createView();
$this->assertSame('{{ day }}.{{ month }}.{{ year }}', $view->getVar('date_pattern'));
$this->assertSame('{{ day }}.{{ month }}.{{ year }}', $view->get('date_pattern'));
}
public function testDontPassDatePatternIfText()
@ -444,7 +444,7 @@ class DateTypeTest extends LocalizedTestCase
));
$view = $form->createView();
$this->assertNull($view->getVar('date_pattern'));
$this->assertNull($view->get('date_pattern'));
}
public function testPassWidgetToView()
@ -454,6 +454,6 @@ class DateTypeTest extends LocalizedTestCase
));
$view = $form->createView();
$this->assertSame('text', $view->getVar('widget'));
$this->assertSame('text', $view->get('widget'));
}
}
}

View File

@ -115,8 +115,8 @@ class FieldTypeTest extends TestCase
$form = $this->factory->create('field', 'name');
$view = $form->createView();
$this->assertEquals('name', $view->getVar('id'));
$this->assertEquals('name', $view->getVar('name'));
$this->assertEquals('name', $view->get('id'));
$this->assertEquals('name', $view->get('name'));
}
public function testPassIdAndNameToViewWithParent()
@ -125,8 +125,8 @@ class FieldTypeTest extends TestCase
$parent->add($this->factory->create('field', 'child'));
$view = $parent->createView();
$this->assertEquals('parent_child', $view['child']->getVar('id'));
$this->assertEquals('parent[child]', $view['child']->getVar('name'));
$this->assertEquals('parent_child', $view['child']->get('id'));
$this->assertEquals('parent[child]', $view['child']->get('name'));
}
public function testPassIdAndNameToViewWithGrandParent()
@ -136,8 +136,8 @@ class FieldTypeTest extends TestCase
$parent['child']->add($this->factory->create('field', 'grand_child'));
$view = $parent->createView();
$this->assertEquals('parent_child_grand_child', $view['child']['grand_child']->getVar('id'));
$this->assertEquals('parent[child][grand_child]', $view['child']['grand_child']->getVar('name'));
$this->assertEquals('parent_child_grand_child', $view['child']['grand_child']->get('id'));
$this->assertEquals('parent[child][grand_child]', $view['child']['grand_child']->get('name'));
}
public function testPassMaxLengthToView()
@ -145,7 +145,7 @@ class FieldTypeTest extends TestCase
$form = $this->factory->create('field', null, array('max_length' => 10));
$view = $form->createView();
$this->assertSame(10, $view->getVar('max_length'));
$this->assertSame(10, $view->get('max_length'));
}
public function testBindWithEmptyDataCreatesObjectIfClassAvailable()

View File

@ -241,7 +241,7 @@ class FormTypeTest extends TestCase
$form = $this->factory->create('form');
$view = $form->createView();
$this->assertFalse($view->getVar('multipart'));
$this->assertFalse($view->get('multipart'));
}
public function testPassMultipartTrueIfAnyChildIsMultipartToView()
@ -251,6 +251,6 @@ class FormTypeTest extends TestCase
$form->add($this->factory->create('file'));
$view = $form->createView();
$this->assertTrue($view->getVar('multipart'));
$this->assertTrue($view->get('multipart'));
}
}

View File

@ -24,7 +24,7 @@ class LanguageTypeTest extends TestCase
$form = $this->factory->create('language');
$view = $form->createView();
$choices = $view->getVar('choices');
$choices = $view->get('choices');
$this->assertArrayHasKey('en', $choices);
$this->assertEquals('Englisch', $choices['en']);
@ -42,7 +42,7 @@ class LanguageTypeTest extends TestCase
{
$form = $this->factory->create('language', 'language');
$view = $form->createView();
$choices = $view->getVar('choices');
$choices = $view->get('choices');
$this->assertArrayNotHasKey('mul', $choices);
}

View File

@ -24,7 +24,7 @@ class LocaleTypeTest extends TestCase
$form = $this->factory->create('locale');
$view = $form->createView();
$choices = $view->getVar('choices');
$choices = $view->get('choices');
$this->assertArrayHasKey('en', $choices);
$this->assertEquals('Englisch', $choices['en']);
@ -33,4 +33,4 @@ class LocaleTypeTest extends TestCase
$this->assertArrayHasKey('zh_Hans_MO', $choices);
$this->assertEquals('Chinesisch (vereinfacht, Sonderverwaltungszone Macao)', $choices['zh_Hans_MO']);
}
}
}

View File

@ -22,6 +22,6 @@ class MoneyTypeTest extends LocalizedTestCase
$form = $this->factory->create('money');
$view = $form->createView();
$this->assertSame('{{ widget }} €', $view->getVar('money_pattern'));
$this->assertSame('{{ widget }} €', $view->get('money_pattern'));
}
}
}

View File

@ -23,7 +23,7 @@ class PasswordTypeTest extends TestCase
$form->setData('pAs5w0rd');
$view = $form->createView();
$this->assertSame('', $view->getVar('value'));
$this->assertSame('', $view->get('value'));
}
public function testEmptyIfBound()
@ -32,7 +32,7 @@ class PasswordTypeTest extends TestCase
$form->bind('pAs5w0rd');
$view = $form->createView();
$this->assertSame('', $view->getVar('value'));
$this->assertSame('', $view->get('value'));
}
public function testNotEmptyIfBoundAndNotAlwaysEmpty()
@ -41,6 +41,6 @@ class PasswordTypeTest extends TestCase
$form->bind('pAs5w0rd');
$view = $form->createView();
$this->assertSame('pAs5w0rd', $view->getVar('value'));
$this->assertSame('pAs5w0rd', $view->get('value'));
}
}

View File

@ -20,7 +20,7 @@ class RadioTypeTest extends TestCase
$form = $this->factory->create('radio', 'name', array('value' => 'foobar'));
$view = $form->createView();
$this->assertEquals('foobar', $view->getVar('value'));
$this->assertEquals('foobar', $view->get('value'));
}
public function testPassParentNameToView()
@ -29,7 +29,7 @@ class RadioTypeTest extends TestCase
$parent->add($this->factory->create('radio', 'child'));
$view = $parent->createView();
$this->assertEquals('parent', $view['child']->getVar('name'));
$this->assertEquals('parent', $view['child']->get('name'));
}
public function testCheckedIfDataTrue()
@ -38,7 +38,7 @@ class RadioTypeTest extends TestCase
$form->setData(true);
$view = $form->createView();
$this->assertTrue($view->getVar('checked'));
$this->assertTrue($view->get('checked'));
}
public function testNotCheckedIfDataFalse()
@ -47,6 +47,6 @@ class RadioTypeTest extends TestCase
$form->setData(false);
$view = $form->createView();
$this->assertFalse($view->getVar('checked'));
$this->assertFalse($view->get('checked'));
}
}

View File

@ -21,7 +21,7 @@ class TimezoneTypeTest extends TestCase
{
$form = $this->factory->create('timezone');
$view = $form->createView();
$choices = $view->getVar('choices');
$choices = $view->get('choices');
$this->assertArrayHasKey('Africa', $choices);
$this->assertArrayHasKey('Africa/Kinshasa', $choices['Africa']);