[Form] Add label_translation_parameters, help_translation_parameters and attr_translation_parameters options to base form type
This commit is contained in:
parent
7f3f75d85d
commit
b3f3c5361f
@ -1366,6 +1366,180 @@ class EntityTypeTest extends BaseTypeTest
|
||||
$this->assertNull($view['child']->vars['translation_domain']);
|
||||
}
|
||||
|
||||
public function testPassLabelTranslationParametersToView()
|
||||
{
|
||||
$view = $this->factory->create(static::TESTED_TYPE, null, [
|
||||
'label_translation_parameters' => ['%param%' => 'value'],
|
||||
'em' => 'default',
|
||||
'class' => self::SINGLE_IDENT_CLASS,
|
||||
])
|
||||
->createView();
|
||||
|
||||
$this->assertSame(['%param%' => 'value'], $view->vars['label_translation_parameters']);
|
||||
}
|
||||
|
||||
public function testPassHelpTranslationParametersToView()
|
||||
{
|
||||
$view = $this->factory->create(static::TESTED_TYPE, null, [
|
||||
'help_translation_parameters' => ['%param%' => 'value'],
|
||||
'em' => 'default',
|
||||
'class' => self::SINGLE_IDENT_CLASS,
|
||||
])
|
||||
->createView();
|
||||
|
||||
$this->assertSame(['%param%' => 'value'], $view->vars['help_translation_parameters']);
|
||||
}
|
||||
|
||||
public function testPassAttrTranslationParametersToView()
|
||||
{
|
||||
$view = $this->factory->create(static::TESTED_TYPE, null, [
|
||||
'attr_translation_parameters' => ['%param%' => 'value'],
|
||||
'em' => 'default',
|
||||
'class' => self::SINGLE_IDENT_CLASS,
|
||||
])
|
||||
->createView();
|
||||
|
||||
$this->assertSame(['%param%' => 'value'], $view->vars['attr_translation_parameters']);
|
||||
}
|
||||
|
||||
public function testInheritLabelTranslationParametersFromParent()
|
||||
{
|
||||
$view = $this->factory
|
||||
->createNamedBuilder('parent', FormTypeTest::TESTED_TYPE, null, [
|
||||
'label_translation_parameters' => ['%param%' => 'value'],
|
||||
])
|
||||
->add('child', static::TESTED_TYPE, [
|
||||
'em' => 'default',
|
||||
'class' => self::SINGLE_IDENT_CLASS,
|
||||
])
|
||||
->getForm()
|
||||
->createView();
|
||||
|
||||
$this->assertEquals(['%param%' => 'value'], $view['child']->vars['label_translation_parameters']);
|
||||
}
|
||||
|
||||
public function testInheritHelpTranslationParametersFromParent()
|
||||
{
|
||||
$view = $this->factory
|
||||
->createNamedBuilder('parent', FormTypeTest::TESTED_TYPE, null, [
|
||||
'help_translation_parameters' => ['%param%' => 'value'],
|
||||
])
|
||||
->add('child', static::TESTED_TYPE, [
|
||||
'em' => 'default',
|
||||
'class' => self::SINGLE_IDENT_CLASS,
|
||||
])
|
||||
->getForm()
|
||||
->createView();
|
||||
|
||||
$this->assertEquals(['%param%' => 'value'], $view['child']->vars['help_translation_parameters']);
|
||||
}
|
||||
|
||||
public function testInheritAttrTranslationParametersFromParent()
|
||||
{
|
||||
$view = $this->factory
|
||||
->createNamedBuilder('parent', FormTypeTest::TESTED_TYPE, null, [
|
||||
'attr_translation_parameters' => ['%param%' => 'value'],
|
||||
])
|
||||
->add('child', static::TESTED_TYPE, [
|
||||
'em' => 'default',
|
||||
'class' => self::SINGLE_IDENT_CLASS,
|
||||
])
|
||||
->getForm()
|
||||
->createView();
|
||||
|
||||
$this->assertEquals(['%param%' => 'value'], $view['child']->vars['attr_translation_parameters']);
|
||||
}
|
||||
|
||||
public function testPreferOwnLabelTranslationParameters()
|
||||
{
|
||||
$view = $this->factory
|
||||
->createNamedBuilder('parent', FormTypeTest::TESTED_TYPE, null, [
|
||||
'label_translation_parameters' => ['%parent_param%' => 'parent_value', '%override_param%' => 'parent_override_value'],
|
||||
])
|
||||
->add('child', static::TESTED_TYPE, [
|
||||
'label_translation_parameters' => ['%override_param%' => 'child_value'],
|
||||
'em' => 'default',
|
||||
'class' => self::SINGLE_IDENT_CLASS,
|
||||
])
|
||||
->getForm()
|
||||
->createView();
|
||||
|
||||
$this->assertEquals(['%parent_param%' => 'parent_value', '%override_param%' => 'child_value'], $view['child']->vars['label_translation_parameters']);
|
||||
}
|
||||
|
||||
public function testPreferOwnHelpTranslationParameters()
|
||||
{
|
||||
$view = $this->factory
|
||||
->createNamedBuilder('parent', FormTypeTest::TESTED_TYPE, null, [
|
||||
'help_translation_parameters' => ['%parent_param%' => 'parent_value', '%override_param%' => 'parent_override_value'],
|
||||
])
|
||||
->add('child', static::TESTED_TYPE, [
|
||||
'help_translation_parameters' => ['%override_param%' => 'child_value'],
|
||||
'em' => 'default',
|
||||
'class' => self::SINGLE_IDENT_CLASS,
|
||||
])
|
||||
->getForm()
|
||||
->createView();
|
||||
|
||||
$this->assertEquals(['%parent_param%' => 'parent_value', '%override_param%' => 'child_value'], $view['child']->vars['help_translation_parameters']);
|
||||
}
|
||||
|
||||
public function testPreferOwnAttrTranslationParameters()
|
||||
{
|
||||
$view = $this->factory
|
||||
->createNamedBuilder('parent', FormTypeTest::TESTED_TYPE, null, [
|
||||
'attr_translation_parameters' => ['%parent_param%' => 'parent_value', '%override_param%' => 'parent_override_value'],
|
||||
])
|
||||
->add('child', static::TESTED_TYPE, [
|
||||
'attr_translation_parameters' => ['%override_param%' => 'child_value'],
|
||||
'em' => 'default',
|
||||
'class' => self::SINGLE_IDENT_CLASS,
|
||||
])
|
||||
->getForm()
|
||||
->createView();
|
||||
|
||||
$this->assertEquals(['%parent_param%' => 'parent_value', '%override_param%' => 'child_value'], $view['child']->vars['attr_translation_parameters']);
|
||||
}
|
||||
|
||||
public function testDefaultLabelTranslationParameters()
|
||||
{
|
||||
$view = $this->factory->createNamedBuilder('parent', FormTypeTest::TESTED_TYPE)
|
||||
->add('child', static::TESTED_TYPE, [
|
||||
'em' => 'default',
|
||||
'class' => self::SINGLE_IDENT_CLASS,
|
||||
])
|
||||
->getForm()
|
||||
->createView();
|
||||
|
||||
$this->assertEquals([], $view['child']->vars['label_translation_parameters']);
|
||||
}
|
||||
|
||||
public function testDefaultHelpTranslationParameters()
|
||||
{
|
||||
$view = $this->factory->createNamedBuilder('parent', FormTypeTest::TESTED_TYPE)
|
||||
->add('child', static::TESTED_TYPE, [
|
||||
'em' => 'default',
|
||||
'class' => self::SINGLE_IDENT_CLASS,
|
||||
])
|
||||
->getForm()
|
||||
->createView();
|
||||
|
||||
$this->assertEquals([], $view['child']->vars['help_translation_parameters']);
|
||||
}
|
||||
|
||||
public function testDefaultAttrTranslationParameters()
|
||||
{
|
||||
$view = $this->factory->createNamedBuilder('parent', FormTypeTest::TESTED_TYPE)
|
||||
->add('child', static::TESTED_TYPE, [
|
||||
'em' => 'default',
|
||||
'class' => self::SINGLE_IDENT_CLASS,
|
||||
])
|
||||
->getForm()
|
||||
->createView();
|
||||
|
||||
$this->assertEquals([], $view['child']->vars['attr_translation_parameters']);
|
||||
}
|
||||
|
||||
public function testPassLabelToView()
|
||||
{
|
||||
$view = $this->factory->createNamed('__test___field', static::TESTED_TYPE, null, [
|
||||
|
@ -27,7 +27,7 @@
|
||||
"require-dev": {
|
||||
"symfony/stopwatch": "~3.4|~4.0",
|
||||
"symfony/dependency-injection": "~3.4|~4.0",
|
||||
"symfony/form": "~3.4|~4.0",
|
||||
"symfony/form": "~4.3",
|
||||
"symfony/http-kernel": "~3.4|~4.0",
|
||||
"symfony/messenger": "~4.2",
|
||||
"symfony/property-access": "~3.4|~4.0",
|
||||
@ -47,6 +47,7 @@
|
||||
"conflict": {
|
||||
"phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0",
|
||||
"symfony/dependency-injection": "<3.4",
|
||||
"symfony/form": "<4.3",
|
||||
"symfony/messenger": "<4.2"
|
||||
},
|
||||
"suggest": {
|
||||
|
@ -187,9 +187,9 @@
|
||||
{%- endif -%}
|
||||
{%- else -%}
|
||||
{%- if help_html is same as(false) -%}
|
||||
{{- help|trans({}, translation_domain) -}}
|
||||
{{- help|trans(help_translation_parameters, translation_domain) -}}
|
||||
{%- else -%}
|
||||
{{- help|trans({}, translation_domain)|raw -}}
|
||||
{{- help|trans(help_translation_parameters, translation_domain)|raw -}}
|
||||
{%- endif -%}
|
||||
{%- endif -%}
|
||||
</span>
|
||||
|
@ -219,7 +219,7 @@
|
||||
{% set label = name|humanize %}
|
||||
{%- endif -%}
|
||||
{%- endif -%}
|
||||
<{{ element|default('label') }}{% if label_attr %}{% with { attr: label_attr } %}{{ block('attributes') }}{% endwith %}{% endif %}>{{ translation_domain is same as(false) ? label : label|trans({}, translation_domain) }}{% block form_label_errors %}{{- form_errors(form) -}}{% endblock form_label_errors %}</{{ element|default('label') }}>
|
||||
<{{ element|default('label') }}{% if label_attr %}{% with { attr: label_attr } %}{{ block('attributes') }}{% endwith %}{% endif %}>{{ translation_domain is same as(false) ? label : label|trans(label_translation_parameters, translation_domain) }}{% block form_label_errors %}{{- form_errors(form) -}}{% endblock form_label_errors %}</{{ element|default('label') }}>
|
||||
{%- else -%}
|
||||
{%- if errors|length > 0 -%}
|
||||
<div id="{{ id }}_errors" class="mb-2">
|
||||
@ -312,9 +312,9 @@
|
||||
{%- endif -%}
|
||||
{%- else -%}
|
||||
{%- if help_html is same as(false) -%}
|
||||
{{- help|trans({}, translation_domain) -}}
|
||||
{{- help|trans(help_translation_parameters, translation_domain) -}}
|
||||
{%- else -%}
|
||||
{{- help|trans({}, translation_domain)|raw -}}
|
||||
{{- help|trans(help_translation_parameters, translation_domain)|raw -}}
|
||||
{%- endif -%}
|
||||
{%- endif -%}
|
||||
</small>
|
||||
|
@ -232,7 +232,7 @@
|
||||
{% set label = name|humanize %}
|
||||
{%- endif -%}
|
||||
{%- endif -%}
|
||||
<button type="{{ type|default('button') }}" {{ block('button_attributes') }}>{{ translation_domain is same as(false) ? label : label|trans({}, translation_domain) }}</button>
|
||||
<button type="{{ type|default('button') }}" {{ block('button_attributes') }}>{{ translation_domain is same as(false) ? label : label|trans(label_translation_parameters, translation_domain) }}</button>
|
||||
{%- endblock button_widget -%}
|
||||
|
||||
{%- block submit_widget -%}
|
||||
@ -279,7 +279,7 @@
|
||||
{%- if translation_domain is same as(false) -%}
|
||||
{{- label -}}
|
||||
{%- else -%}
|
||||
{{- label|trans({}, translation_domain) -}}
|
||||
{{- label|trans(label_translation_parameters, translation_domain) -}}
|
||||
{%- endif -%}
|
||||
</{{ element|default('label') }}>
|
||||
{%- endif -%}
|
||||
@ -301,9 +301,9 @@
|
||||
{%- endif -%}
|
||||
{%- else -%}
|
||||
{%- if help_html is same as(false) -%}
|
||||
{{- help|trans({}, translation_domain) -}}
|
||||
{{- help|trans(help_translation_parameters, translation_domain) -}}
|
||||
{%- else -%}
|
||||
{{- help|trans({}, translation_domain)|raw -}}
|
||||
{{- help|trans(help_translation_parameters, translation_domain)|raw -}}
|
||||
{%- endif -%}
|
||||
{%- endif -%}
|
||||
</p>
|
||||
@ -433,7 +433,7 @@
|
||||
{%- for attrname, attrvalue in attr -%}
|
||||
{{- " " -}}
|
||||
{%- if attrname in ['placeholder', 'title'] -%}
|
||||
{{- attrname }}="{{ translation_domain is same as(false) ? attrvalue : attrvalue|trans({}, translation_domain) }}"
|
||||
{{- attrname }}="{{ translation_domain is same as(false) ? attrvalue : attrvalue|trans(attr_translation_parameters, translation_domain) }}"
|
||||
{%- elseif attrvalue is same as(true) -%}
|
||||
{{- attrname }}="{{ attrname }}"
|
||||
{%- elseif attrvalue is not same as(false) -%}
|
||||
|
@ -17,6 +17,6 @@ class StubTranslator implements TranslatorInterface
|
||||
{
|
||||
public function trans($id, array $parameters = [], $domain = null, $locale = null)
|
||||
{
|
||||
return '[trans]'.$id.'[/trans]';
|
||||
return '[trans]'.strtr($id, $parameters).'[/trans]';
|
||||
}
|
||||
}
|
||||
|
@ -11,7 +11,7 @@
|
||||
{% if label is empty %}
|
||||
{% set label = name|humanize %}
|
||||
{% endif %}
|
||||
<label>Custom label: {{ label|trans({}, translation_domain) }}</label>
|
||||
<label>Custom label: {{ label|trans(label_translation_parameters, translation_domain) }}</label>
|
||||
{% endspaceless %}
|
||||
{% endblock _names_entry_label %}
|
||||
|
||||
@ -20,6 +20,6 @@
|
||||
{% if label is empty %}
|
||||
{% set label = name|humanize %}
|
||||
{% endif %}
|
||||
<label>Custom name label: {{ label|trans({}, translation_domain) }}</label>
|
||||
<label>Custom name label: {{ label|trans(label_translation_parameters, translation_domain) }}</label>
|
||||
{% endspaceless %}
|
||||
{% endblock _name_c_entry_label %}
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?php foreach ($attr as $k => $v): ?>
|
||||
<?php if ('placeholder' === $k || 'title' === $k): ?>
|
||||
<?php printf('%s="%s" ', $view->escape($k), $view->escape(false !== $translation_domain ? $view['translator']->trans($v, [], $translation_domain) : $v)) ?>
|
||||
<?php printf('%s="%s" ', $view->escape($k), $view->escape(false !== $translation_domain ? $view['translator']->trans($v, $attr_translation_parameters, $translation_domain) : $v)) ?>
|
||||
<?php elseif (true === $v): ?>
|
||||
<?php printf('%s="%s" ', $view->escape($k), $view->escape($k)) ?>
|
||||
<?php elseif (false !== $v): ?>
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?php if (!$label) { $label = isset($label_format)
|
||||
? strtr($label_format, ['%name%' => $name, '%id%' => $id])
|
||||
: $view['form']->humanize($name); } ?>
|
||||
<button type="<?php echo isset($type) ? $view->escape($type) : 'button' ?>" <?php echo $view['form']->block($form, 'button_attributes') ?>><?php echo $view->escape(false !== $translation_domain ? $view['translator']->trans($label, [], $translation_domain) : $label) ?></button>
|
||||
<button type="<?php echo isset($type) ? $view->escape($type) : 'button' ?>" <?php echo $view['form']->block($form, 'button_attributes') ?>><?php echo $view->escape(false !== $translation_domain ? $view['translator']->trans($label, $label_translation_parameters, $translation_domain) : $label) ?></button>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?php if (!empty($help)): ?>
|
||||
<?php $help_attr['class'] = isset($help_attr['class']) ? trim($help_attr['class'].' help-text') : 'help-text'; ?>
|
||||
<?php $help = false !== $translation_domain ? $view['translator']->trans($help, [], $translation_domain) : $help; ?>
|
||||
<?php $help = false !== $translation_domain ? $view['translator']->trans($help, $help_translation_parameters, $translation_domain) : $help; ?>
|
||||
<?php $help = false === $help_html ? $view->escape($help) : $help ?>
|
||||
<p id="<?php echo $view->escape($id); ?>_help" <?php echo ' '.$view['form']->block($form, 'attributes', ['attr' => $help_attr]); ?>><?php echo $help; ?></p>
|
||||
<?php endif; ?>
|
||||
|
@ -4,5 +4,5 @@
|
||||
<?php if (!$label) { $label = isset($label_format)
|
||||
? strtr($label_format, ['%name%' => $name, '%id%' => $id])
|
||||
: $view['form']->humanize($name); } ?>
|
||||
<label<?php if ($label_attr) { echo ' '.$view['form']->block($form, 'attributes', ['attr' => $label_attr]); } ?>><?php echo $view->escape(false !== $translation_domain ? $view['translator']->trans($label, [], $translation_domain) : $label) ?></label>
|
||||
<label<?php if ($label_attr) { echo ' '.$view['form']->block($form, 'attributes', ['attr' => $label_attr]); } ?>><?php echo $view->escape(false !== $translation_domain ? $view['translator']->trans($label, $label_translation_parameters, $translation_domain) : $label) ?></label>
|
||||
<?php endif ?>
|
||||
|
@ -17,6 +17,6 @@ class StubTranslator implements TranslatorInterface
|
||||
{
|
||||
public function trans($id, array $parameters = [], $domain = null, $locale = null)
|
||||
{
|
||||
return '[trans]'.$id.'[/trans]';
|
||||
return '[trans]'.strtr($id, $parameters).'[/trans]';
|
||||
}
|
||||
}
|
||||
|
@ -8,6 +8,30 @@ CHANGELOG
|
||||
option is set to `single_text`
|
||||
* added `block_prefix` option to `BaseType`.
|
||||
* added `help_html` option to display the `help` text as HTML.
|
||||
* added `label_translation_parameters`, `attr_translation_parameters`, `help_translation_parameters` options
|
||||
to `FormType` to pass translation parameters to form labels, attributes (`placeholder` and `title`) and help text respectively.
|
||||
The passed parameters will replace placeholders in translation messages.
|
||||
|
||||
```php
|
||||
class OrderType extends AbstractType
|
||||
{
|
||||
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||
{
|
||||
$builder->add('comment', TextType::class, [
|
||||
'label' => 'Comment to the order to %company%',
|
||||
'label_translation_parameters' => [
|
||||
'%company%' => 'Acme',
|
||||
],
|
||||
'help' => 'The address of the %company% is %address%',
|
||||
'help_translation_parameters' => [
|
||||
'%company%' => 'Acme Ltd.',
|
||||
'%address%' => '4 Form street, Symfonyville',
|
||||
],
|
||||
])
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
4.2.0
|
||||
-----
|
||||
|
@ -44,6 +44,8 @@ abstract class BaseType extends AbstractType
|
||||
$name = $form->getName();
|
||||
$blockName = $options['block_name'] ?: $form->getName();
|
||||
$translationDomain = $options['translation_domain'];
|
||||
$labelTranslationParameters = $options['label_translation_parameters'];
|
||||
$attrTranslationParameters = $options['attr_translation_parameters'];
|
||||
$labelFormat = $options['label_format'];
|
||||
|
||||
if ($view->parent) {
|
||||
@ -61,6 +63,9 @@ abstract class BaseType extends AbstractType
|
||||
$translationDomain = $view->parent->vars['translation_domain'];
|
||||
}
|
||||
|
||||
$labelTranslationParameters = array_merge($view->parent->vars['label_translation_parameters'], $labelTranslationParameters);
|
||||
$attrTranslationParameters = array_merge($view->parent->vars['attr_translation_parameters'], $attrTranslationParameters);
|
||||
|
||||
if (!$labelFormat) {
|
||||
$labelFormat = $view->parent->vars['label_format'];
|
||||
}
|
||||
@ -97,6 +102,8 @@ abstract class BaseType extends AbstractType
|
||||
'block_prefixes' => $blockPrefixes,
|
||||
'unique_block_prefix' => $uniqueBlockPrefix,
|
||||
'translation_domain' => $translationDomain,
|
||||
'label_translation_parameters' => $labelTranslationParameters,
|
||||
'attr_translation_parameters' => $attrTranslationParameters,
|
||||
// Using the block name here speeds up performance in collection
|
||||
// forms, where each entry has the same full block name.
|
||||
// Including the type is important too, because if rows of a
|
||||
@ -118,6 +125,8 @@ abstract class BaseType extends AbstractType
|
||||
'disabled' => false,
|
||||
'label' => null,
|
||||
'label_format' => null,
|
||||
'label_translation_parameters' => [],
|
||||
'attr_translation_parameters' => [],
|
||||
'attr' => [],
|
||||
'translation_domain' => null,
|
||||
'auto_initialize' => true,
|
||||
|
@ -68,6 +68,7 @@ class FormType extends BaseType
|
||||
parent::buildView($view, $form, $options);
|
||||
|
||||
$name = $form->getName();
|
||||
$helpTranslationParameters = $options['help_translation_parameters'];
|
||||
|
||||
if ($view->parent) {
|
||||
if ('' === $name) {
|
||||
@ -78,6 +79,8 @@ class FormType extends BaseType
|
||||
if (!isset($view->vars['attr']['readonly']) && isset($view->parent->vars['attr']['readonly']) && false !== $view->parent->vars['attr']['readonly']) {
|
||||
$view->vars['attr']['readonly'] = true;
|
||||
}
|
||||
|
||||
$helpTranslationParameters = array_merge($view->parent->vars['help_translation_parameters'], $helpTranslationParameters);
|
||||
}
|
||||
|
||||
$formConfig = $form->getConfig();
|
||||
@ -92,6 +95,7 @@ class FormType extends BaseType
|
||||
'help' => $options['help'],
|
||||
'help_attr' => $options['help_attr'],
|
||||
'help_html' => $options['help_html'],
|
||||
'help_translation_parameters' => $helpTranslationParameters,
|
||||
'compound' => $formConfig->getCompound(),
|
||||
'method' => $formConfig->getMethod(),
|
||||
'action' => $formConfig->getAction(),
|
||||
@ -185,6 +189,7 @@ class FormType extends BaseType
|
||||
'help' => null,
|
||||
'help_attr' => [],
|
||||
'help_html' => false,
|
||||
'help_translation_parameters' => [],
|
||||
]);
|
||||
|
||||
$resolver->setAllowedTypes('label_attr', 'array');
|
||||
|
@ -2572,6 +2572,82 @@ abstract class AbstractLayoutTest extends FormIntegrationTestCase
|
||||
[@type="color"]
|
||||
[@name="name"]
|
||||
[@value="#0000ff"]
|
||||
'
|
||||
);
|
||||
}
|
||||
|
||||
public function testLabelWithTranslationParameters()
|
||||
{
|
||||
$form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\TextType');
|
||||
$html = $this->renderLabel($form->createView(), 'Address is %address%', [
|
||||
'label_translation_parameters' => [
|
||||
'%address%' => 'Paris, rue de la Paix',
|
||||
],
|
||||
]);
|
||||
|
||||
$this->assertMatchesXpath($html,
|
||||
'/label
|
||||
[@for="name"]
|
||||
[.="[trans]Address is Paris, rue de la Paix[/trans]"]
|
||||
'
|
||||
);
|
||||
}
|
||||
|
||||
public function testHelpWithTranslationParameters()
|
||||
{
|
||||
$form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\TextType', null, [
|
||||
'help' => 'for company %company%',
|
||||
'help_translation_parameters' => [
|
||||
'%company%' => 'ACME Ltd.',
|
||||
],
|
||||
]);
|
||||
$html = $this->renderHelp($form->createView());
|
||||
|
||||
$this->assertMatchesXpath($html,
|
||||
'/*
|
||||
[@id="name_help"]
|
||||
[.="[trans]for company ACME Ltd.[/trans]"]
|
||||
'
|
||||
);
|
||||
}
|
||||
|
||||
public function testAttributesWithTranslationParameters()
|
||||
{
|
||||
$form = $this->factory->createNamed('name', 'Symfony\Component\Form\Extension\Core\Type\TextType', null, [
|
||||
'attr' => [
|
||||
'title' => 'Message to %company%',
|
||||
'placeholder' => 'Enter a message to %company%',
|
||||
],
|
||||
'attr_translation_parameters' => [
|
||||
'%company%' => 'ACME Ltd.',
|
||||
],
|
||||
]);
|
||||
$html = $this->renderWidget($form->createView());
|
||||
|
||||
$this->assertMatchesXpath($html,
|
||||
'/input
|
||||
[@title="[trans]Message to ACME Ltd.[/trans]"]
|
||||
[@placeholder="[trans]Enter a message to ACME Ltd.[/trans]"]
|
||||
'
|
||||
);
|
||||
}
|
||||
|
||||
public function testButtonWithTranslationParameters()
|
||||
{
|
||||
$form = $this->factory->createNamedBuilder('myform')
|
||||
->add('mybutton', 'Symfony\Component\Form\Extension\Core\Type\ButtonType', [
|
||||
'label' => 'Submit to %company%',
|
||||
'label_translation_parameters' => [
|
||||
'%company%' => 'ACME Ltd.',
|
||||
],
|
||||
])
|
||||
->getForm();
|
||||
$view = $form->get('mybutton')->createView();
|
||||
$html = $this->renderWidget($view, ['label_format' => 'form.%name%']);
|
||||
|
||||
$this->assertMatchesXpath($html,
|
||||
'/button
|
||||
[.="[trans]Submit to ACME Ltd.[/trans]"]
|
||||
'
|
||||
);
|
||||
}
|
||||
|
@ -119,6 +119,102 @@ abstract class BaseTypeTest extends TypeTestCase
|
||||
$this->assertNull($view['child']->vars['translation_domain']);
|
||||
}
|
||||
|
||||
public function testPassLabelTranslationParametersToView()
|
||||
{
|
||||
$view = $this->factory->create($this->getTestedType(), null, [
|
||||
'label_translation_parameters' => ['%param%' => 'value'],
|
||||
])
|
||||
->createView();
|
||||
|
||||
$this->assertSame(['%param%' => 'value'], $view->vars['label_translation_parameters']);
|
||||
}
|
||||
|
||||
public function testPassAttrTranslationParametersToView()
|
||||
{
|
||||
$view = $this->factory->create($this->getTestedType(), null, [
|
||||
'attr_translation_parameters' => ['%param%' => 'value'],
|
||||
])
|
||||
->createView();
|
||||
|
||||
$this->assertSame(['%param%' => 'value'], $view->vars['attr_translation_parameters']);
|
||||
}
|
||||
|
||||
public function testInheritLabelTranslationParametersFromParent()
|
||||
{
|
||||
$view = $this->factory
|
||||
->createNamedBuilder('parent', FormTypeTest::TESTED_TYPE, null, [
|
||||
'label_translation_parameters' => ['%param%' => 'value'],
|
||||
])
|
||||
->add('child', $this->getTestedType())
|
||||
->getForm()
|
||||
->createView();
|
||||
|
||||
$this->assertEquals(['%param%' => 'value'], $view['child']->vars['label_translation_parameters']);
|
||||
}
|
||||
|
||||
public function testInheritAttrTranslationParametersFromParent()
|
||||
{
|
||||
$view = $this->factory
|
||||
->createNamedBuilder('parent', FormTypeTest::TESTED_TYPE, null, [
|
||||
'attr_translation_parameters' => ['%param%' => 'value'],
|
||||
])
|
||||
->add('child', $this->getTestedType())
|
||||
->getForm()
|
||||
->createView();
|
||||
|
||||
$this->assertEquals(['%param%' => 'value'], $view['child']->vars['attr_translation_parameters']);
|
||||
}
|
||||
|
||||
public function testPreferOwnLabelTranslationParameters()
|
||||
{
|
||||
$view = $this->factory
|
||||
->createNamedBuilder('parent', FormTypeTest::TESTED_TYPE, null, [
|
||||
'label_translation_parameters' => ['%parent_param%' => 'parent_value', '%override_param%' => 'parent_override_value'],
|
||||
])
|
||||
->add('child', $this->getTestedType(), [
|
||||
'label_translation_parameters' => ['%override_param%' => 'child_value'],
|
||||
])
|
||||
->getForm()
|
||||
->createView();
|
||||
|
||||
$this->assertEquals(['%parent_param%' => 'parent_value', '%override_param%' => 'child_value'], $view['child']->vars['label_translation_parameters']);
|
||||
}
|
||||
|
||||
public function testPreferOwnAttrTranslationParameters()
|
||||
{
|
||||
$view = $this->factory
|
||||
->createNamedBuilder('parent', FormTypeTest::TESTED_TYPE, null, [
|
||||
'attr_translation_parameters' => ['%parent_param%' => 'parent_value', '%override_param%' => 'parent_override_value'],
|
||||
])
|
||||
->add('child', $this->getTestedType(), [
|
||||
'attr_translation_parameters' => ['%override_param%' => 'child_value'],
|
||||
])
|
||||
->getForm()
|
||||
->createView();
|
||||
|
||||
$this->assertEquals(['%parent_param%' => 'parent_value', '%override_param%' => 'child_value'], $view['child']->vars['attr_translation_parameters']);
|
||||
}
|
||||
|
||||
public function testDefaultLabelTranslationParameters()
|
||||
{
|
||||
$view = $this->factory->createNamedBuilder('parent', FormTypeTest::TESTED_TYPE)
|
||||
->add('child', $this->getTestedType())
|
||||
->getForm()
|
||||
->createView();
|
||||
|
||||
$this->assertEquals([], $view['child']->vars['label_translation_parameters']);
|
||||
}
|
||||
|
||||
public function testDefaultAttrTranslationParameters()
|
||||
{
|
||||
$view = $this->factory->createNamedBuilder('parent', FormTypeTest::TESTED_TYPE)
|
||||
->add('child', $this->getTestedType())
|
||||
->getForm()
|
||||
->createView();
|
||||
|
||||
$this->assertEquals([], $view['child']->vars['attr_translation_parameters']);
|
||||
}
|
||||
|
||||
public function testPassLabelToView()
|
||||
{
|
||||
$view = $this->factory->createNamed('__test___field', $this->getTestedType(), null, ['label' => 'My label'])
|
||||
|
@ -651,4 +651,52 @@ class FormTypeTest extends BaseTypeTest
|
||||
|
||||
$this->assertSame(['form', 'child', '_parent_child'], $view['child']->vars['block_prefixes']);
|
||||
}
|
||||
|
||||
public function testDefaultHelpTranslationParameters()
|
||||
{
|
||||
$view = $this->factory->createNamedBuilder('parent', self::TESTED_TYPE)
|
||||
->add('child', $this->getTestedType())
|
||||
->getForm()
|
||||
->createView();
|
||||
|
||||
$this->assertEquals([], $view['child']->vars['help_translation_parameters']);
|
||||
}
|
||||
|
||||
public function testPassHelpTranslationParametersToView()
|
||||
{
|
||||
$view = $this->factory->create($this->getTestedType(), null, [
|
||||
'help_translation_parameters' => ['%param%' => 'value'],
|
||||
])
|
||||
->createView();
|
||||
|
||||
$this->assertSame(['%param%' => 'value'], $view->vars['help_translation_parameters']);
|
||||
}
|
||||
|
||||
public function testInheritHelpTranslationParametersFromParent()
|
||||
{
|
||||
$view = $this->factory
|
||||
->createNamedBuilder('parent', self::TESTED_TYPE, null, [
|
||||
'help_translation_parameters' => ['%param%' => 'value'],
|
||||
])
|
||||
->add('child', $this->getTestedType())
|
||||
->getForm()
|
||||
->createView();
|
||||
|
||||
$this->assertEquals(['%param%' => 'value'], $view['child']->vars['help_translation_parameters']);
|
||||
}
|
||||
|
||||
public function testPreferOwnHelpTranslationParameters()
|
||||
{
|
||||
$view = $this->factory
|
||||
->createNamedBuilder('parent', self::TESTED_TYPE, null, [
|
||||
'help_translation_parameters' => ['%parent_param%' => 'parent_value', '%override_param%' => 'parent_override_value'],
|
||||
])
|
||||
->add('child', $this->getTestedType(), [
|
||||
'help_translation_parameters' => ['%override_param%' => 'child_value'],
|
||||
])
|
||||
->getForm()
|
||||
->createView();
|
||||
|
||||
$this->assertEquals(['%parent_param%' => 'parent_value', '%override_param%' => 'child_value'], $view['child']->vars['help_translation_parameters']);
|
||||
}
|
||||
}
|
||||
|
@ -30,6 +30,7 @@
|
||||
"action",
|
||||
"allow_file_upload",
|
||||
"attr",
|
||||
"attr_translation_parameters",
|
||||
"auto_initialize",
|
||||
"block_name",
|
||||
"block_prefix",
|
||||
@ -39,10 +40,12 @@
|
||||
"help",
|
||||
"help_attr",
|
||||
"help_html",
|
||||
"help_translation_parameters",
|
||||
"inherit_data",
|
||||
"label",
|
||||
"label_attr",
|
||||
"label_format",
|
||||
"label_translation_parameters",
|
||||
"mapped",
|
||||
"method",
|
||||
"post_max_size_message",
|
||||
|
@ -2,27 +2,30 @@
|
||||
Symfony\Component\Form\Extension\Core\Type\ChoiceType (Block prefix: "choice")
|
||||
==============================================================================
|
||||
|
||||
--------------------------- -------------------- ------------------------- -----------------------
|
||||
Options Overridden options Parent options Extension options
|
||||
--------------------------- -------------------- ------------------------- -----------------------
|
||||
choice_attr FormType FormType FormTypeCsrfExtension
|
||||
choice_label -------------------- ------------------------- -----------------------
|
||||
choice_loader compound action csrf_field_name
|
||||
choice_name data_class allow_file_upload csrf_message
|
||||
choice_translation_domain empty_data attr csrf_protection
|
||||
choice_value error_bubbling auto_initialize csrf_token_id
|
||||
choices trim block_name csrf_token_manager
|
||||
expanded block_prefix
|
||||
group_by by_reference
|
||||
multiple data
|
||||
placeholder disabled
|
||||
preferred_choices help
|
||||
--------------------------- -------------------- ------------------------------ -----------------------
|
||||
Options Overridden options Parent options Extension options
|
||||
--------------------------- -------------------- ------------------------------ -----------------------
|
||||
choice_attr FormType FormType FormTypeCsrfExtension
|
||||
choice_label -------------------- ------------------------------ -----------------------
|
||||
choice_loader compound action csrf_field_name
|
||||
choice_name data_class allow_file_upload csrf_message
|
||||
choice_translation_domain empty_data attr csrf_protection
|
||||
choice_value error_bubbling attr_translation_parameters csrf_token_id
|
||||
choices trim auto_initialize csrf_token_manager
|
||||
expanded block_name
|
||||
group_by block_prefix
|
||||
multiple by_reference
|
||||
placeholder data
|
||||
preferred_choices disabled
|
||||
help
|
||||
help_attr
|
||||
help_html
|
||||
help_translation_parameters
|
||||
inherit_data
|
||||
label
|
||||
label_attr
|
||||
label_format
|
||||
label_translation_parameters
|
||||
mapped
|
||||
method
|
||||
post_max_size_message
|
||||
@ -30,7 +33,7 @@ Symfony\Component\Form\Extension\Core\Type\ChoiceType (Block prefix: "choice")
|
||||
required
|
||||
translation_domain
|
||||
upload_max_size_message
|
||||
--------------------------- -------------------- ------------------------- -----------------------
|
||||
--------------------------- -------------------- ------------------------------ -----------------------
|
||||
|
||||
Parent types
|
||||
------------
|
||||
|
@ -6,6 +6,7 @@
|
||||
"action",
|
||||
"allow_file_upload",
|
||||
"attr",
|
||||
"attr_translation_parameters",
|
||||
"auto_initialize",
|
||||
"block_name",
|
||||
"block_prefix",
|
||||
@ -19,10 +20,12 @@
|
||||
"help",
|
||||
"help_attr",
|
||||
"help_html",
|
||||
"help_translation_parameters",
|
||||
"inherit_data",
|
||||
"label",
|
||||
"label_attr",
|
||||
"label_format",
|
||||
"label_translation_parameters",
|
||||
"mapped",
|
||||
"method",
|
||||
"post_max_size_message",
|
||||
|
@ -2,12 +2,13 @@
|
||||
Symfony\Component\Form\Extension\Core\Type\FormType (Block prefix: "form")
|
||||
==========================================================================
|
||||
|
||||
-------------------------
|
||||
------------------------------
|
||||
Options
|
||||
-------------------------
|
||||
------------------------------
|
||||
action
|
||||
allow_file_upload
|
||||
attr
|
||||
attr_translation_parameters
|
||||
auto_initialize
|
||||
block_name
|
||||
block_prefix
|
||||
@ -21,10 +22,12 @@ Symfony\Component\Form\Extension\Core\Type\FormType (Block prefix: "form")
|
||||
help
|
||||
help_attr
|
||||
help_html
|
||||
help_translation_parameters
|
||||
inherit_data
|
||||
label
|
||||
label_attr
|
||||
label_format
|
||||
label_translation_parameters
|
||||
mapped
|
||||
method
|
||||
post_max_size_message
|
||||
@ -33,5 +36,5 @@ Symfony\Component\Form\Extension\Core\Type\FormType (Block prefix: "form")
|
||||
translation_domain
|
||||
trim
|
||||
upload_max_size_message
|
||||
-------------------------
|
||||
------------------------------
|
||||
|
||||
|
Reference in New Issue
Block a user