我使用symfony并且我有一个带有ChoiceType的表单,选项来自其他实体的字段中的数组
FormType
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('paq', ChoiceType::class, array(
'choices' => $options['data_array'],
));
}
枝条
<form action="{{ path('ligne_panier_create', { 'id': opProd.produit.id }) }}" method="post" {{ form_enctype(form) }} >
{{form_start(form)}}
<div class="form-group">
<h5>Choisir le type de paquetage</h5>
{{form_widget(form.paq, { 'attr': {'class': 'form-control subject'} }) }}<br>
</div>
<p class="text-center">
<button type="submit" id="_submit" name="_submit" value="" class="btn btn-primary" ><i class="fa fa-sign-in"></i>Ajouter </button>
</p>
{{form_end(form)}}
</form>
控制器
public function createAction(Request $request, $id)
{
$em=$this->getDoctrine()->getManager();
$Lpanier = new LignePanier();
$produit = $em->getRepository('CentralBundle:Produit')->find($id);
$opProd = $em->getRepository('CentralBundle:OperationProduit')->find($id);
$data_array = $opProd->getPaquetage();
$form = $this->createForm('Central\CentralBundle\Form\LignePanierType', $Lpanier, array('data_array'=>$data_array));
$form->handleRequest($request);
$paq= $form['paq']->getData(); // always null !!
$qte= $form['qte']->getData(); // work fine
$Lpanier->setPrixTotProd($qte*$produit->getPrixVenteTTC());
$em->persist($Lpanier);
$em->flush($Lpanier);
return $this->render('CentralBundle:Default:commitSuccess.html.twig');
}
列表选择显示完美,但提交此字段的值后总是在数据库中获取NULL的问题。
我在表单中有其他输入,并且提交完美!
有人可以帮我吗?
答案 0 :(得分:0)
在您的模板中,您有opProd {&#39; id&#39;:opProd.produit.id}对象,但在您的渲染方法中,您不需要设置此变量。