我正在使用Symfony表格的Silex微框架。在twig模板中,我使用以下方法生成此字段:
...
{{ form_widget(form.transport_selection) }}
...
如何覆盖这个symfony twig form templet,为Silex中的每一组(输入字段和标签)生成包裹。
这是我的树枝注册:
use Silex\Provider\FormServiceProvider;
use Symfony\Component\Translation\Loader\YamlFileLoader;
use Symfony\Component\Validator\Constraints as Assert;
$app->register(new Silex\Provider\TwigServiceProvider(), array(
'twig.path' => [
__DIR__.'/App/View',
]
));
如何用每个无线电选择包装单选按钮和标签?
输出
<div id="form_transport_selection">
<input type="radio" id="form_transport_selection_0" name="form[transport_selection]" required="required" value="country" checked="checked">
<label for="form_transport_selection_0" class="required">country</label>
<input type="radio" id="form_transport_selection_1" name="form[transport_selection]" required="required" value="abroad">
<label for="form_transport_selection_1" class="required">abroad</label>
</div>
预期输出:
<div id="form_transport_selection">
<div class="radio1">
<input type="radio" id="form_transport_selection_0" name="form[transport_selection]" required="required" value="country" checked="checked">
<label for="form_transport_selection_0" class="required">country</label>
</div>
<div class="radio2">
<input type="radio" id="form_transport_selection_1" name="form[transport_selection]" required="required" value="abroad">
<label for="form_transport_selection_1" class="required">abroad</label>
</div>
</div>
由于
答案 0 :(得分:1)
您可以为此表单创建新模板并重新定义单选按钮视图
my.form.twig
SSMS->Server->Properties->Connections
并在控制器模板中使用它,其中显示了表单
{
"id": 9595511812,
"Feeds": [
{
"department": "mseb",
"consumer_number": 1234567890,
"due_date": "2016-11-11",
"due_amount": 400,
"balance_amount": 0,
"unitsConsumed": 40,
"freezeDate": "2016-11-11",
"lastPaidDate": "2016-11-11",
"billNumber": "9877",
"id": "1",
"paid": false
},
{
"department": "mseb",
"consumer_number": 1234567890,
"due_date": "2016-11-21",
"due_amount": 400,
"balance_amount": 0,
"unitsConsumed": 40,
"freezeDate": "2016-11-21",
"lastPaidDate": "2016-11-21",
"billNumber": "9877",
**"id": "2",**
"paid": false
}
]
}
答案 1 :(得分:1)
扩展MaxP的答案。确保只修改单选按钮,你不希望在复选框中使用它!我为复选框添加了一个不同的类。请注意if / else执行此操作。
{% extends "form_div_layout.html.twig" %}
{% block choice_widget_expanded %}
<div {{ block('widget_container_attributes') }}>
{% set i=1 %}
{% for child in form %}
{% if form.vars.multiple == false %}
<div class="radio-{{i}}">
{% elseif form.vars.multiple == true %}
<div class="checkbox-{{i}}">
{% endif %}
{{ form_widget(child) }}
{{ form_label(child, null, {translation_domain: choice_translation_domain}) }}
</div>
{% set i=i+1 %}
{% endfor %}
</div>
{% endblock choice_widget_expanded %}
并在控制器模板中使用它,其中显示了表单
{% form_theme form 'my.form.twig' %}
....
{{ form_widget(form.transport_selection) }}
使用Symfony时,我建议覆盖app / Resources / views / Form / fields.html.twig中的所有Twig字段
然后在config.yml上你只需将它添加到twig的配置中就可以使用
twig:
form_themes:
- 'Form/fields.html.twig'