编辑:请参阅我在问题末尾找到的解决方案;-)
我正在寻找一个解决方案的时间,但我真的没有找到我喜欢的东西。我确信这很容易做到。
我正在使用Symfony 3.1构建表单。我的表单不会在数据库中发送任何内容。一切似乎都没问题。但是在渲染我的树枝模板时,我的所有复选框都被<div>
html标记包围。
我只是希望twig向我呈现一个没有<div>
标记的表单。
编辑:这是Twig渲染我的:这对我来说没问题,但我想删除div标签
<form name="form" method="post">
<div id="form"><div><label for="form_1">1</label><input type="checkbox" id="form_1" name="form[1]" class="ballsCheckBox" value="1" /></div>
</form>
这是我的树枝模板:
{% extends "::base.html.twig" %}
{% block title %}SimulotoBundle:Lotto:lotto{% endblock %}
{% block body %}
<h1>Welcome to the Lotto:result page</h1>
{{form(form)}}
{% endblock %}
我直接在控制器中构建表单。看见: 公共函数LottoSimulationFormAction()
{
$lt = new LottoSimulation();
$data = [];
$formBuilder = $this->createFormBuilder($data);
/** building Lotto grid with checkboxes * */
for ($i = 1; $i <= $lt->getMaxNb(); $i++)
{
$formBuilder->add($i, CheckboxType::class, [
'label' => $i,
'required' => false,
'attr' => [
'class' => 'ballsCheckBox'
]
]);
}
/** adding submit button **/
$formBuilder->add('Envoyer', SubmitType::class, [
'attr' => [
'class' => 'save'
]
]);
$form = $formBuilder->getForm();
return $this->render("SimulotoBundle:Lotto:lotto.html.twig", [
"form" => $form->createview()
]);
}
}
答案 0 :(得分:1)
这是解决这个问题的解决方案。
我需要自定义表单呈现,因为此页面上的Synfony cookBook中对此进行了解释http://symfony.com/doc/current/form/form_customization.html
转到vendor \ Symfony \ Bridge \ Twig \ Ressources \ views \ Form \ form_div_layout.html并修改块:
{%- block form_row -%}
<div>
{{- form_label(form) -}}
{{- form_errors(form) -}}
{{- form_widget(form) -}}
</div>
{%- endblock form_row -%}
您可以删除它,但更好的方法是将该块复制/过去到您的teplate并覆盖它。像这样:
{% extends "::base.html.twig" %}
{% form_theme form _self %} //don't forget this line of code
{%- block form_row -%}
{{- form_label(form) -}}
{{- form_errors(form) -}}
{{- form_widget(form) -}}
{%- endblock form_row -%}