我在数据库中有两个表-订单和卡车。他们与ManyToOne有关系。当我收到订单时-卡车字段默认为空。卡车表具有预配置数据。因此,我的任务是:对于使用findAll()方法还原并发送到twig(作为表呈现)的每个订单实体,请创建复选框,以便我可以将卡车指定给每个订单。这是指定卡车订购的表格:
class TruckType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('name', 'entity', array(
'class' => 'AppBundle:Trucks',
'choice_label' => 'name',
'label' => false,
'multiple' => false,
'required' => false,
));
}
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\Orders',
));
}
/**
* Returns the name of this type.
*
* @return string The name of this type
*/
public function getName()
{
return 'TruckType';
}
}
和树枝:
{% for order in orders %}
<tr>
<td width="30%">{{ order.name }}</td>
<td width="30%">{{ order.delivery }}</td>
<td width="15%">{{ order.stock }}</td>
<td width="15%">{{ form_widget(truckform) }}</td>
</tr>
{% endfor %}
但是,此渲染复选框仅适用于表中的第一个实体。我哪里错了?
您没有显示有关如何生成truckform
变量的代码,但我想您只是使用TruckType
表单类型实例化了表单。这种方法的问题在于,Symfony不会多次渲染一个表单或一个表单字段,因此您的{{ form_widget(truckform) }}
片段仅在第一次循环迭代中被渲染。如果您考虑一下,这是有道理的,否则您将拥有许多具有相同名称和ID的表单字段,并且当您提交表单时,将无法区分它们。您需要使用嵌入式表单采用不同的方法。看看此Symfony文档页面,它将为您指明正确的方向:如何嵌入表单集合
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句