symfony2将label属性添加到多选列表中

时间:2015-12-26 21:58:47

标签: symfony attributes twig

我想在差异选择列表中添加不同的属性。

->add('list', 'choice_single_select', [
            'choices' => ['gender', 'female', 'newborn', 'oldborn'],
            'required' => false,
            'expanded' => true,
            'multiple' => true,
            'label_attr' => ['class' =>  'listClass'],
            'choice_attr' => function($val, $key, $index) {
                return [
                    'data-ng-click' => 'form.list = (form.list != '.$val.') ? '.$val." : '';",
                    'data-ng-show' => 'aggr.count_'.$val.'.count'
                ];
            },
        ])

我想将ng-show="gender2"设置为性别,将ng-show="female4"设置为女性标签

有一种方法可以将每个choice_attr属性添加到输入字段,但不能用于标签。所以我有点混淆添加它的简单方法

1 个答案:

答案 0 :(得分:0)

我已经设法通过使用现有的choice_attr来自定义twig表单主题来解决这个问题。它将循环遍历属性,仅允许标题和ng-show标记属性。 (我已经删除了label_attr用法,但如果需要,可以使用它。

{% form_theme form _self %}

{% block checkbox_widget -%}
    {% set parent_label_class = parent_label_class|default('') %}

    <div class="checkbox">
        <label{% for attrname, attrvalue in attr %} {% if attrname in ['data-ng-show', 'title'] %}{{ attrname }}="{{ attrvalue }}"{%- endif -%}{% endfor %}>
            <input type="checkbox" {{ block('widget_attributes') }}{% if value is defined %} value="{{ value }}"{% endif %}{% if checked %} checked="checked"{% endif %} />
            {{ translation_domain is same as(false) ? label : label|trans({}, translation_domain) }}
        </label>
    </div>
{%- endblock checkbox_widget %}