我有一个带有多个推车的模板.可以有不同数量的购物车,没有固定的限制.
在每个购物车中,我想要一个用户可以选择国家/地区的表单.如果他提交表格,则应确定运费.
现在我正在做以下工作来实现它:
{% for cart in carts %}
{# Some template stuff #}
{{ form_start(form) }}
<div class="form-input">
<label for="country" class="middle-color">Country <span class="active-color">*</span></label>
{{ form_widget(form.country) }}
{{ form_end(form) }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
这是我的表单构建器:
$form = $this->createFormBuilder()
->add('country', 'choice', array('choice_list' => $choiceList, 'label' => 'country',
'attr' => array('class' => "custom-selectbox dark-color light-gradient")))
->getForm();
Run Code Online (Sandbox Code Playgroud)
现在问题是这个逻辑适用于第一个购物车,但没有显示进一步购物车的表格.我怎么处理这个?
lor*_*dos 10
我遇到了这个以及关于类似问题的另一个问题.你可以在这里找到解决方案的第一个答案.
为了将它包装起来,我没有createView()在控制器中调用表单上的函数,就像将表单传递给视图时一样,但是在twig视图中.
例如,在您的控制器操作中,您确实返回了表单对象本身:
return $this->render('AppBundle:Cart:list.html.twig', ['formObject' => $form];
Run Code Online (Sandbox Code Playgroud)
在您的视图中,您将在每个循环中设置表单:
{% for cart in carts %}
{# Some template stuff #}
{% set form = formObject.createView %}
{{ form_start(form) }}
<div class="form-input">
<label for="country" class="middle-color">Country <span class="active-color">*</span></label>
{{ form_widget(form.country) }}
{{ form_end(form) }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)