[Form] Removed dependency from renderer plugins on fields. The field instance is now passed to setUp() instead.
This commit is contained in:
parent
cb283d3783
commit
eba602ed1b
@ -20,7 +20,7 @@ class CheckboxFieldConfig extends AbstractFieldConfig
|
|||||||
public function configure(FieldInterface $field, array $options)
|
public function configure(FieldInterface $field, array $options)
|
||||||
{
|
{
|
||||||
$field->setValueTransformer(new BooleanToStringTransformer())
|
$field->setValueTransformer(new BooleanToStringTransformer())
|
||||||
->addRendererPlugin(new CheckedPlugin($field))
|
->addRendererPlugin(new CheckedPlugin())
|
||||||
->setRendererVar('value', $options['value']);
|
->setRendererVar('value', $options['value']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@ class ChoiceFieldConfig extends AbstractFieldConfig
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($options['multiple'] && !$options['expanded']) {
|
if ($options['multiple'] && !$options['expanded']) {
|
||||||
$field->addRendererPlugin(new SelectMultipleNamePlugin($field));
|
$field->addRendererPlugin(new SelectMultipleNamePlugin());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,8 +41,8 @@ class FieldConfig extends AbstractFieldConfig
|
|||||||
->setValueTransformer($options['value_transformer'])
|
->setValueTransformer($options['value_transformer'])
|
||||||
->setNormalizationTransformer($options['normalization_transformer'])
|
->setNormalizationTransformer($options['normalization_transformer'])
|
||||||
->setData($options['data'])
|
->setData($options['data'])
|
||||||
->setRenderer(new DefaultRenderer($this->theme, $options['template']))
|
->setRenderer(new DefaultRenderer($field, $this->theme, $options['template']))
|
||||||
->addRendererPlugin(new FieldPlugin($field))
|
->addRendererPlugin(new FieldPlugin())
|
||||||
->setRendererVar('class', null)
|
->setRendererVar('class', null)
|
||||||
->setRendererVar('max_length', null)
|
->setRendererVar('max_length', null)
|
||||||
->setRendererVar('size', null)
|
->setRendererVar('size', null)
|
||||||
|
@ -42,7 +42,7 @@ class FormConfig extends AbstractFieldConfig
|
|||||||
->setValidationGroups($options['validation_groups'])
|
->setValidationGroups($options['validation_groups'])
|
||||||
->setVirtual($options['virtual'])
|
->setVirtual($options['virtual'])
|
||||||
->setValidator($options['validator'])
|
->setValidator($options['validator'])
|
||||||
->addRendererPlugin(new FormPlugin($field ));
|
->addRendererPlugin(new FormPlugin());
|
||||||
|
|
||||||
if ($options['csrf_protection']) {
|
if ($options['csrf_protection']) {
|
||||||
$field->enableCsrfProtection($options['csrf_provider'], $options['csrf_field_name']);
|
$field->enableCsrfProtection($options['csrf_provider'], $options['csrf_field_name']);
|
||||||
|
@ -18,7 +18,7 @@ class PasswordFieldConfig extends AbstractFieldConfig
|
|||||||
{
|
{
|
||||||
public function configure(FieldInterface $field, array $options)
|
public function configure(FieldInterface $field, array $options)
|
||||||
{
|
{
|
||||||
$field->addRendererPlugin(new PasswordValuePlugin($field, $options['always_empty']));
|
$field->addRendererPlugin(new PasswordValuePlugin($options['always_empty']));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getDefaultOptions(array $options)
|
public function getDefaultOptions(array $options)
|
||||||
|
@ -21,8 +21,8 @@ class RadioFieldConfig extends AbstractFieldConfig
|
|||||||
public function configure(FieldInterface $field, array $options)
|
public function configure(FieldInterface $field, array $options)
|
||||||
{
|
{
|
||||||
$field->setValueTransformer(new BooleanToStringTransformer())
|
$field->setValueTransformer(new BooleanToStringTransformer())
|
||||||
->addRendererPlugin(new CheckedPlugin($field))
|
->addRendererPlugin(new CheckedPlugin())
|
||||||
->addRendererPlugin(new ParentNamePlugin($field))
|
->addRendererPlugin(new ParentNamePlugin())
|
||||||
->setRendererVar('value', $options['value']);
|
->setRendererVar('value', $options['value']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ namespace Symfony\Component\Form;
|
|||||||
use Symfony\Component\Form\ValueTransformer\ValueTransformerInterface;
|
use Symfony\Component\Form\ValueTransformer\ValueTransformerInterface;
|
||||||
use Symfony\Component\Form\ValueTransformer\TransformationFailedException;
|
use Symfony\Component\Form\ValueTransformer\TransformationFailedException;
|
||||||
use Symfony\Component\Form\Renderer\RendererInterface;
|
use Symfony\Component\Form\Renderer\RendererInterface;
|
||||||
use Symfony\Component\Form\Renderer\Plugin\PluginInterface;
|
use Symfony\Component\Form\Renderer\Plugin\RendererPluginInterface;
|
||||||
use Symfony\Component\Form\Event\DataEvent;
|
use Symfony\Component\Form\Event\DataEvent;
|
||||||
use Symfony\Component\Form\Event\FilterDataEvent;
|
use Symfony\Component\Form\Event\FilterDataEvent;
|
||||||
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
|
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
|
||||||
@ -495,7 +495,7 @@ class Field implements FieldInterface
|
|||||||
return $this->renderer;
|
return $this->renderer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function addRendererPlugin(PluginInterface $plugin)
|
public function addRendererPlugin(RendererPluginInterface $plugin)
|
||||||
{
|
{
|
||||||
$this->renderer->addPlugin($plugin);
|
$this->renderer->addPlugin($plugin);
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ namespace Symfony\Component\Form\Renderer;
|
|||||||
|
|
||||||
use Symfony\Component\Form\FieldInterface;
|
use Symfony\Component\Form\FieldInterface;
|
||||||
use Symfony\Component\Form\Renderer\Theme\ThemeInterface;
|
use Symfony\Component\Form\Renderer\Theme\ThemeInterface;
|
||||||
use Symfony\Component\Form\Renderer\Plugin\PluginInterface;
|
use Symfony\Component\Form\Renderer\Plugin\RendererPluginInterface;
|
||||||
|
|
||||||
class DefaultRenderer implements RendererInterface, \ArrayAccess
|
class DefaultRenderer implements RendererInterface, \ArrayAccess
|
||||||
{
|
{
|
||||||
@ -33,8 +33,9 @@ class DefaultRenderer implements RendererInterface, \ArrayAccess
|
|||||||
|
|
||||||
private $children = array();
|
private $children = array();
|
||||||
|
|
||||||
public function __construct(ThemeInterface $theme, $template)
|
public function __construct(FieldInterface $field, ThemeInterface $theme, $template)
|
||||||
{
|
{
|
||||||
|
$this->field = $field;
|
||||||
$this->theme = $theme;
|
$this->theme = $theme;
|
||||||
$this->template = $template;
|
$this->template = $template;
|
||||||
}
|
}
|
||||||
@ -56,8 +57,8 @@ class DefaultRenderer implements RendererInterface, \ArrayAccess
|
|||||||
// Make sure that plugins and set variables are applied in the
|
// Make sure that plugins and set variables are applied in the
|
||||||
// order they were added
|
// order they were added
|
||||||
foreach ($this->changes as $key => $value) {
|
foreach ($this->changes as $key => $value) {
|
||||||
if ($value instanceof PluginInterface) {
|
if ($value instanceof RendererPluginInterface) {
|
||||||
$value->setUp($this);
|
$value->setUp($this->field, $this);
|
||||||
} else {
|
} else {
|
||||||
$this->vars[$key] = $value;
|
$this->vars[$key] = $value;
|
||||||
}
|
}
|
||||||
@ -82,7 +83,7 @@ class DefaultRenderer implements RendererInterface, \ArrayAccess
|
|||||||
return $this->theme;
|
return $this->theme;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function addPlugin(PluginInterface $plugin)
|
public function addPlugin(RendererPluginInterface $plugin)
|
||||||
{
|
{
|
||||||
$this->initialized = false;
|
$this->initialized = false;
|
||||||
$this->changes[] = $plugin;
|
$this->changes[] = $plugin;
|
||||||
|
@ -14,17 +14,10 @@ namespace Symfony\Component\Form\Renderer\Plugin;
|
|||||||
use Symfony\Component\Form\Renderer\RendererInterface;
|
use Symfony\Component\Form\Renderer\RendererInterface;
|
||||||
use Symfony\Component\Form\FieldInterface;
|
use Symfony\Component\Form\FieldInterface;
|
||||||
|
|
||||||
class CheckedPlugin implements PluginInterface
|
class CheckedPlugin implements RendererPluginInterface
|
||||||
{
|
{
|
||||||
private $field;
|
public function setUp(FieldInterface $field, RendererInterface $renderer)
|
||||||
|
|
||||||
public function __construct(FieldInterface $field)
|
|
||||||
{
|
{
|
||||||
$this->field = $field;
|
$renderer->setVar('checked', (bool)$field->getData());
|
||||||
}
|
|
||||||
|
|
||||||
public function setUp(RendererInterface $renderer)
|
|
||||||
{
|
|
||||||
$renderer->setVar('checked', (bool)$this->field->getData());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -11,10 +11,11 @@
|
|||||||
|
|
||||||
namespace Symfony\Component\Form\Renderer\Plugin;
|
namespace Symfony\Component\Form\Renderer\Plugin;
|
||||||
|
|
||||||
|
use Symfony\Component\Form\FieldInterface;
|
||||||
use Symfony\Component\Form\Renderer\RendererInterface;
|
use Symfony\Component\Form\Renderer\RendererInterface;
|
||||||
use Symfony\Component\Form\ChoiceList\ChoiceListInterface;
|
use Symfony\Component\Form\ChoiceList\ChoiceListInterface;
|
||||||
|
|
||||||
class ChoicePlugin implements PluginInterface
|
class ChoicePlugin implements RendererPluginInterface
|
||||||
{
|
{
|
||||||
private $choiceList;
|
private $choiceList;
|
||||||
|
|
||||||
@ -23,7 +24,7 @@ class ChoicePlugin implements PluginInterface
|
|||||||
$this->choiceList = $choiceList;
|
$this->choiceList = $choiceList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setUp(RendererInterface $renderer)
|
public function setUp(FieldInterface $field, RendererInterface $renderer)
|
||||||
{
|
{
|
||||||
$choiceList = $this->choiceList;
|
$choiceList = $this->choiceList;
|
||||||
|
|
||||||
|
@ -11,9 +11,10 @@
|
|||||||
|
|
||||||
namespace Symfony\Component\Form\Renderer\Plugin;
|
namespace Symfony\Component\Form\Renderer\Plugin;
|
||||||
|
|
||||||
|
use Symfony\Component\Form\FieldInterface;
|
||||||
use Symfony\Component\Form\Renderer\RendererInterface;
|
use Symfony\Component\Form\Renderer\RendererInterface;
|
||||||
|
|
||||||
class DatePatternPlugin implements PluginInterface
|
class DatePatternPlugin implements RendererPluginInterface
|
||||||
{
|
{
|
||||||
private $formatter;
|
private $formatter;
|
||||||
|
|
||||||
@ -22,7 +23,7 @@ class DatePatternPlugin implements PluginInterface
|
|||||||
$this->formatter = $formatter;
|
$this->formatter = $formatter;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setUp(RendererInterface $renderer)
|
public function setUp(FieldInterface $field, RendererInterface $renderer)
|
||||||
{
|
{
|
||||||
$renderer->setVar('date_pattern', $this->getPattern());
|
$renderer->setVar('date_pattern', $this->getPattern());
|
||||||
}
|
}
|
||||||
|
@ -11,29 +11,13 @@
|
|||||||
|
|
||||||
namespace Symfony\Component\Form\Renderer\Plugin;
|
namespace Symfony\Component\Form\Renderer\Plugin;
|
||||||
|
|
||||||
use Symfony\Component\Form\Renderer\RendererInterface;
|
|
||||||
use Symfony\Component\Form\FieldInterface;
|
use Symfony\Component\Form\FieldInterface;
|
||||||
|
use Symfony\Component\Form\Renderer\RendererInterface;
|
||||||
|
|
||||||
class EnctypePlugin implements PluginInterface
|
class EnctypePlugin implements RendererPluginInterface
|
||||||
{
|
{
|
||||||
private $field;
|
public function setUp(FieldInterface $field, RendererInterface $renderer)
|
||||||
|
|
||||||
public function __construct(FieldInterface $field)
|
|
||||||
{
|
{
|
||||||
$this->field = $field;
|
$renderer->setVar('enctype', $field->isMultipart() ? 'enctype="multipart/form-data"' : '');
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Renders the HTML enctype in the field tag, if necessary
|
|
||||||
*
|
|
||||||
* Example usage in Twig templates:
|
|
||||||
*
|
|
||||||
* <field action="..." method="post" {{ field.render.enctype }}>
|
|
||||||
*
|
|
||||||
* @param Form $field The field for which to render the encoding type
|
|
||||||
*/
|
|
||||||
public function setUp(RendererInterface $renderer)
|
|
||||||
{
|
|
||||||
$renderer->setVar('enctype', $this->field->isMultipart() ? 'enctype="multipart/form-data"' : '');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -14,15 +14,8 @@ namespace Symfony\Component\Form\Renderer\Plugin;
|
|||||||
use Symfony\Component\Form\Renderer\RendererInterface;
|
use Symfony\Component\Form\Renderer\RendererInterface;
|
||||||
use Symfony\Component\Form\FieldInterface;
|
use Symfony\Component\Form\FieldInterface;
|
||||||
|
|
||||||
class FieldPlugin implements PluginInterface
|
class FieldPlugin implements RendererPluginInterface
|
||||||
{
|
{
|
||||||
private $field;
|
|
||||||
|
|
||||||
public function __construct(FieldInterface $field)
|
|
||||||
{
|
|
||||||
$this->field = $field;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Renders the HTML enctype in the field tag, if necessary
|
* Renders the HTML enctype in the field tag, if necessary
|
||||||
*
|
*
|
||||||
@ -32,12 +25,12 @@ class FieldPlugin implements PluginInterface
|
|||||||
*
|
*
|
||||||
* @param Form $field The field for which to render the encoding type
|
* @param Form $field The field for which to render the encoding type
|
||||||
*/
|
*/
|
||||||
public function setUp(RendererInterface $renderer)
|
public function setUp(FieldInterface $field, RendererInterface $renderer)
|
||||||
{
|
{
|
||||||
$fieldKey = $this->field->getName();
|
$fieldKey = $field->getName();
|
||||||
|
|
||||||
if ($this->field->hasParent()) {
|
if ($field->hasParent()) {
|
||||||
$parentRenderer = $this->field->getParent()->getRenderer();
|
$parentRenderer = $field->getParent()->getRenderer();
|
||||||
$parentId = $parentRenderer->getVar('id');
|
$parentId = $parentRenderer->getVar('id');
|
||||||
$parentName = $parentRenderer->getVar('name');
|
$parentName = $parentRenderer->getVar('name');
|
||||||
$id = sprintf('%s_%s', $parentId, $fieldKey);
|
$id = sprintf('%s_%s', $parentId, $fieldKey);
|
||||||
@ -50,13 +43,13 @@ class FieldPlugin implements PluginInterface
|
|||||||
$renderer->setVar('this', $renderer);
|
$renderer->setVar('this', $renderer);
|
||||||
$renderer->setVar('id', $id);
|
$renderer->setVar('id', $id);
|
||||||
$renderer->setVar('name', $name);
|
$renderer->setVar('name', $name);
|
||||||
$renderer->setVar('errors', $this->field->getErrors());
|
$renderer->setVar('errors', $field->getErrors());
|
||||||
$renderer->setVar('value', $this->field->getDisplayedData());
|
$renderer->setVar('value', $field->getDisplayedData());
|
||||||
$renderer->setVar('disabled', $this->field->isDisabled());
|
$renderer->setVar('disabled', $field->isDisabled());
|
||||||
$renderer->setVar('required', $this->field->isRequired());
|
$renderer->setVar('required', $field->isRequired());
|
||||||
$renderer->setVar('class', null);
|
$renderer->setVar('class', null);
|
||||||
$renderer->setVar('max_length', null);
|
$renderer->setVar('max_length', null);
|
||||||
$renderer->setVar('size', null);
|
$renderer->setVar('size', null);
|
||||||
$renderer->setVar('label', ucfirst(strtolower(str_replace('_', ' ', $this->field->getName()))));
|
$renderer->setVar('label', ucfirst(strtolower(str_replace('_', ' ', $field->getName()))));
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -11,20 +11,19 @@
|
|||||||
|
|
||||||
namespace Symfony\Component\Form\Renderer\Plugin;
|
namespace Symfony\Component\Form\Renderer\Plugin;
|
||||||
|
|
||||||
use Symfony\Component\Form\Renderer\RendererInterface;
|
use Symfony\Component\Form\FieldInterface;
|
||||||
use Symfony\Component\Form\FormInterface;
|
use Symfony\Component\Form\FormInterface;
|
||||||
|
use Symfony\Component\Form\Renderer\RendererInterface;
|
||||||
|
use Symfony\Component\Form\Exception\UnexpectedTypeException;
|
||||||
|
|
||||||
class FormPlugin implements PluginInterface
|
class FormPlugin implements RendererPluginInterface
|
||||||
{
|
{
|
||||||
private $form;
|
public function setUp(FieldInterface $form, RendererInterface $renderer)
|
||||||
|
|
||||||
public function __construct(FormInterface $form)
|
|
||||||
{
|
{
|
||||||
$this->form = $form;
|
if (!$form instanceof FormInterface) {
|
||||||
|
throw new UnexpectedTypeException($form, 'Symfony\Component\Form\FormInterface');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setUp(RendererInterface $renderer)
|
|
||||||
{
|
|
||||||
$fields = array();
|
$fields = array();
|
||||||
|
|
||||||
foreach ($this->form as $name => $field) {
|
foreach ($this->form as $name => $field) {
|
||||||
|
@ -11,10 +11,10 @@
|
|||||||
|
|
||||||
namespace Symfony\Component\Form\Renderer\Plugin;
|
namespace Symfony\Component\Form\Renderer\Plugin;
|
||||||
|
|
||||||
use Symfony\Component\Form\Renderer\RendererInterface;
|
|
||||||
use Symfony\Component\Form\FieldInterface;
|
use Symfony\Component\Form\FieldInterface;
|
||||||
|
use Symfony\Component\Form\Renderer\RendererInterface;
|
||||||
|
|
||||||
class MaxLengthPlugin implements PluginInterface
|
class MaxLengthPlugin implements RendererPluginInterface
|
||||||
{
|
{
|
||||||
private $maxLength;
|
private $maxLength;
|
||||||
|
|
||||||
@ -23,16 +23,7 @@ class MaxLengthPlugin implements PluginInterface
|
|||||||
$this->maxLength = $maxLength;
|
$this->maxLength = $maxLength;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function setUp(FieldInterface $field, RendererInterface $renderer)
|
||||||
* Renders the HTML enctype in the field tag, if necessary
|
|
||||||
*
|
|
||||||
* Example usage in Twig templates:
|
|
||||||
*
|
|
||||||
* <field action="..." method="post" {{ field.render.enctype }}>
|
|
||||||
*
|
|
||||||
* @param Form $field The field for which to render the encoding type
|
|
||||||
*/
|
|
||||||
public function setUp(RendererInterface $renderer)
|
|
||||||
{
|
{
|
||||||
$renderer->setVar('max_length', $this->maxLength);
|
$renderer->setVar('max_length', $this->maxLength);
|
||||||
}
|
}
|
||||||
|
@ -11,9 +11,10 @@
|
|||||||
|
|
||||||
namespace Symfony\Component\Form\Renderer\Plugin;
|
namespace Symfony\Component\Form\Renderer\Plugin;
|
||||||
|
|
||||||
|
use Symfony\Component\Form\FieldInterface;
|
||||||
use Symfony\Component\Form\Renderer\RendererInterface;
|
use Symfony\Component\Form\Renderer\RendererInterface;
|
||||||
|
|
||||||
class MoneyPatternPlugin implements PluginInterface
|
class MoneyPatternPlugin implements RendererPluginInterface
|
||||||
{
|
{
|
||||||
private static $patterns = array();
|
private static $patterns = array();
|
||||||
|
|
||||||
@ -24,7 +25,7 @@ class MoneyPatternPlugin implements PluginInterface
|
|||||||
$this->currency = $currency;
|
$this->currency = $currency;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setUp(RendererInterface $renderer)
|
public function setUp(FieldInterface $field, RendererInterface $renderer)
|
||||||
{
|
{
|
||||||
$renderer->setVar('money_pattern', self::getPattern($this->currency));
|
$renderer->setVar('money_pattern', self::getPattern($this->currency));
|
||||||
}
|
}
|
||||||
|
@ -11,31 +11,15 @@
|
|||||||
|
|
||||||
namespace Symfony\Component\Form\Renderer\Plugin;
|
namespace Symfony\Component\Form\Renderer\Plugin;
|
||||||
|
|
||||||
use Symfony\Component\Form\Renderer\RendererInterface;
|
|
||||||
use Symfony\Component\Form\FieldInterface;
|
use Symfony\Component\Form\FieldInterface;
|
||||||
|
use Symfony\Component\Form\Renderer\RendererInterface;
|
||||||
|
|
||||||
class ParentNamePlugin implements PluginInterface
|
class ParentNamePlugin implements RendererPluginInterface
|
||||||
{
|
{
|
||||||
private $field;
|
public function setUp(FieldInterface $field, RendererInterface $renderer)
|
||||||
|
|
||||||
public function __construct(FieldInterface $field)
|
|
||||||
{
|
{
|
||||||
$this->field = $field;
|
if ($field->hasParent()) {
|
||||||
}
|
$parentRenderer = $field->getParent()->getRenderer();
|
||||||
|
|
||||||
/**
|
|
||||||
* Renders the HTML enctype in the field tag, if necessary
|
|
||||||
*
|
|
||||||
* Example usage in Twig templates:
|
|
||||||
*
|
|
||||||
* <field action="..." method="post" {{ field.render.enctype }}>
|
|
||||||
*
|
|
||||||
* @param Form $field The field for which to render the encoding type
|
|
||||||
*/
|
|
||||||
public function setUp(RendererInterface $renderer)
|
|
||||||
{
|
|
||||||
if ($this->field->hasParent()) {
|
|
||||||
$parentRenderer = $this->field->getParent()->getRenderer();
|
|
||||||
$renderer->setVar('name', $parentRenderer->getVar('name'));
|
$renderer->setVar('name', $parentRenderer->getVar('name'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,35 +11,23 @@
|
|||||||
|
|
||||||
namespace Symfony\Component\Form\Renderer\Plugin;
|
namespace Symfony\Component\Form\Renderer\Plugin;
|
||||||
|
|
||||||
use Symfony\Component\Form\Renderer\RendererInterface;
|
|
||||||
use Symfony\Component\Form\FieldInterface;
|
use Symfony\Component\Form\FieldInterface;
|
||||||
|
use Symfony\Component\Form\Renderer\RendererInterface;
|
||||||
|
|
||||||
class PasswordValuePlugin implements PluginInterface
|
class PasswordValuePlugin implements RendererPluginInterface
|
||||||
{
|
{
|
||||||
private $field;
|
|
||||||
|
|
||||||
private $alwaysEmpty;
|
private $alwaysEmpty;
|
||||||
|
|
||||||
public function __construct(FieldInterface $field, $alwaysEmpty = true)
|
public function __construct($alwaysEmpty = true)
|
||||||
{
|
{
|
||||||
$this->field = $field;
|
|
||||||
$this->alwaysEmpty = $alwaysEmpty;
|
$this->alwaysEmpty = $alwaysEmpty;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function setUp(FieldInterface $field, RendererInterface $renderer)
|
||||||
* Renders the HTML enctype in the field tag, if necessary
|
|
||||||
*
|
|
||||||
* Example usage in Twig templates:
|
|
||||||
*
|
|
||||||
* <field action="..." method="post" {{ field.render.enctype }}>
|
|
||||||
*
|
|
||||||
* @param Form $field The field for which to render the encoding type
|
|
||||||
*/
|
|
||||||
public function setUp(RendererInterface $renderer)
|
|
||||||
{
|
{
|
||||||
$value = $this->alwaysEmpty || !$this->field->isSubmitted()
|
$value = $this->alwaysEmpty || !$field->isSubmitted()
|
||||||
? ''
|
? ''
|
||||||
: $this->field->getDisplayedData();
|
: $field->getDisplayedData();
|
||||||
|
|
||||||
$renderer->setVar('value', $value);
|
$renderer->setVar('value', $value);
|
||||||
}
|
}
|
||||||
|
@ -11,9 +11,10 @@
|
|||||||
|
|
||||||
namespace Symfony\Component\Form\Renderer\Plugin;
|
namespace Symfony\Component\Form\Renderer\Plugin;
|
||||||
|
|
||||||
|
use Symfony\Component\Form\FieldInterface;
|
||||||
use Symfony\Component\Form\Renderer\RendererInterface;
|
use Symfony\Component\Form\Renderer\RendererInterface;
|
||||||
|
|
||||||
interface PluginInterface
|
interface RendererPluginInterface
|
||||||
{
|
{
|
||||||
function setUp(RendererInterface $renderer);
|
function setUp(FieldInterface $field, RendererInterface $renderer);
|
||||||
}
|
}
|
@ -11,11 +11,12 @@
|
|||||||
|
|
||||||
namespace Symfony\Component\Form\Renderer\Plugin;
|
namespace Symfony\Component\Form\Renderer\Plugin;
|
||||||
|
|
||||||
|
use Symfony\Component\Form\FieldInterface;
|
||||||
use Symfony\Component\Form\Renderer\RendererInterface;
|
use Symfony\Component\Form\Renderer\RendererInterface;
|
||||||
|
|
||||||
class SelectMultipleNamePlugin implements PluginInterface
|
class SelectMultipleNamePlugin implements RendererPluginInterface
|
||||||
{
|
{
|
||||||
public function setUp(RendererInterface $renderer)
|
public function setUp(FieldInterface $field, RendererInterface $renderer)
|
||||||
{
|
{
|
||||||
// Add "[]" to the name in case a select tag with multiple options is
|
// 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
|
// displayed. Otherwise only one of the selected options is sent in the
|
||||||
|
Reference in New Issue
Block a user