我想在差异选择列表中添加不同的属性。
->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属性添加到输入字段,但不能用于标签。所以我有点混淆添加它的简单方法
答案 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 %}