merged branch stloyd/feature/form-labels (PR #6262)
This PR was merged into the master branch. Commits -------d5426f0
[Form] Add tests to prove that label is not rendered when is marked as false120547c
[Form][TwigBridge] Don't set label attributes if is marked as not to be rendered [Form][FrameworkBundle] Add option to disable rendering of label for fields36e4556
[Form] Option for not displaying a label by setting label to false. [Form] Fixed formatting & translation .. Discussion ---------- [Form] Added option for not displaying a form-label by setting label to false Bug fix: no Feature addition: yes Backwards compatibility break: no Symfony2 tests pass: yes Replaces: #5421 @fabpot @BenjaminBeck: I was just not sure what to do with "table based" forms, so I left `<td></td>` rendered when there is no label, because I'm not sure that we can hide it easily. --------------------------------------------------------------------------- by XWB at 2012-12-11T09:30:14Z 👍
This commit is contained in:
commit
2578f1ef58
@ -221,6 +221,7 @@
|
|||||||
|
|
||||||
{% block form_label %}
|
{% block form_label %}
|
||||||
{% spaceless %}
|
{% spaceless %}
|
||||||
|
{% if label is not sameas(false) %}
|
||||||
{% if not compound %}
|
{% if not compound %}
|
||||||
{% set label_attr = label_attr|merge({'for': id}) %}
|
{% set label_attr = label_attr|merge({'for': id}) %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@ -231,6 +232,7 @@
|
|||||||
{% set label = name|humanize %}
|
{% set label = name|humanize %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<label{% for attrname, attrvalue in label_attr %} {{ attrname }}="{{ attrvalue }}"{% endfor %}>{{ label|trans({}, translation_domain) }}</label>
|
<label{% for attrname, attrvalue in label_attr %} {{ attrname }}="{{ attrvalue }}"{% endfor %}>{{ label|trans({}, translation_domain) }}</label>
|
||||||
|
{% endif %}
|
||||||
{% endspaceless %}
|
{% endspaceless %}
|
||||||
{% endblock form_label %}
|
{% endblock form_label %}
|
||||||
|
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
|
<?php if (false !== $label): ?>
|
||||||
<?php if ($required) { $label_attr['class'] = trim((isset($label_attr['class']) ? $label_attr['class'] : '').' required'); } ?>
|
<?php if ($required) { $label_attr['class'] = trim((isset($label_attr['class']) ? $label_attr['class'] : '').' required'); } ?>
|
||||||
<?php if (!$compound) { $label_attr['for'] = $id; } ?>
|
<?php if (!$compound) { $label_attr['for'] = $id; } ?>
|
||||||
<?php if (!$label) { $label = $view['form']->humanize($name); } ?>
|
<?php if (!$label) { $label = $view['form']->humanize($name); } ?>
|
||||||
<label <?php foreach ($label_attr as $k => $v) { printf('%s="%s" ', $view->escape($k), $view->escape($v)); } ?>><?php echo $view->escape($view['translator']->trans($label, array(), $translation_domain)) ?></label>
|
<label <?php foreach ($label_attr as $k => $v) { printf('%s="%s" ', $view->escape($k), $view->escape($v)); } ?>><?php echo $view->escape($view['translator']->trans($label, array(), $translation_domain)) ?></label>
|
||||||
|
<?php endif ?>
|
||||||
|
@ -526,6 +526,23 @@ abstract class AbstractDivLayoutTest extends AbstractLayoutTest
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testLabelIsNotRenderedWhenSetToFalse()
|
||||||
|
{
|
||||||
|
$form = $this->factory->createNamed('name', 'text', null, array(
|
||||||
|
'label' => false
|
||||||
|
));
|
||||||
|
$html = $this->renderRow($form->createView());
|
||||||
|
|
||||||
|
$this->assertMatchesXpath($html,
|
||||||
|
'/div
|
||||||
|
[
|
||||||
|
./input[@id="name"]
|
||||||
|
]
|
||||||
|
[count(//label)=0]
|
||||||
|
'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider themeBlockInheritanceProvider
|
* @dataProvider themeBlockInheritanceProvider
|
||||||
*/
|
*/
|
||||||
|
@ -39,6 +39,25 @@ abstract class AbstractTableLayoutTest extends AbstractLayoutTest
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testLabelIsNotRenderedWhenSetToFalse()
|
||||||
|
{
|
||||||
|
$form = $this->factory->createNamed('name', 'text', null, array(
|
||||||
|
'label' => false
|
||||||
|
));
|
||||||
|
$html = $this->renderRow($form->createView());
|
||||||
|
|
||||||
|
$this->assertMatchesXpath($html,
|
||||||
|
'/tr
|
||||||
|
[
|
||||||
|
./td
|
||||||
|
[count(//label)=0]
|
||||||
|
/following-sibling::td
|
||||||
|
[./input[@id="name"]]
|
||||||
|
]
|
||||||
|
'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
public function testRepeatedRow()
|
public function testRepeatedRow()
|
||||||
{
|
{
|
||||||
$form = $this->factory->createNamed('name', 'repeated');
|
$form = $this->factory->createNamed('name', 'repeated');
|
||||||
|
Reference in New Issue
Block a user