2016-11-24 44 views
0

我在使用CollectionType時顯示錶單時遇到問題。它不顯示newOrderCustomerType輸入,只需標註「客戶ID」。怎麼了?當使用CollectionType時Symfony3表單不顯示輸入字段

enter image description here

newOrderCustomerType

<?php 

namespace AppBundle\Form; 

use Symfony\Component\Form\Extension\Core\Type\TextType; 
use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\FormBuilderInterface; 
use Symfony\Component\OptionsResolver\OptionsResolver; 

class newOrderCustomerType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder-> 
     add('firstname', TextType::class,array('label'=>'Firstname'))-> 
     add('lastname', TextType::class,array('label'=>'Lastname'))-> 
     add('email', TextType::class,array('label'=>'Email'))-> 
     add('login', TextType::class,array('label'=>'Login')); 
    } 

    public function configureOptions(OptionsResolver $resolver) 
    { 
     $resolver->setDefaults(array(
      'data_class' => 'AppBundle\Entity\Customer', 
     )); 
    } 

    public function getName() 
    { 
     return 'app_bundlenew_order_customer_type'; 
    } 
} 

newOrderType

<?php 

namespace AppBundle\Form; 

use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\Extension\Core\Type\CollectionType; 
use Symfony\Component\Form\Extension\Core\Type\SubmitType; 
use Symfony\Component\Form\FormBuilderInterface; 
use Symfony\Component\OptionsResolver\OptionsResolver; 

class newOrderType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('customerId',CollectionType::class,array(
       'entry_type'=>newOrderCustomerType::class, 
       'allow_add' => true, 
       'by_reference' => false, 
       'data_class' => 'AppBundle\Entity\Customer', 
      )) 
      ->add('shopOrderId') 
      ->add('orderDate') 
      ->add('postBuyFormMsg') 
      ->add('invoice') 
      ->add('payType') 
      ->add('shipmentType') 
      ->add('payStatus') 
      ->add('save',SubmitType::class); 
    } 

    public function configureOptions(OptionsResolver $resolver) 
    { 

    } 

    public function getName() 
    { 
     return 'app_bundlenew_order_type'; 
    } 
} 

而且在嫩枝模板

{{ form_start(orderForm) }} 
    {{ form_widget(orderForm) }} 
{{ form_end(orderForm) }} 

如何使它顯示所有輸入網絡視場?

回答

0

嘗試刪除 'data_class',我不認爲這是CollectionType的一部分:

->add('customerId',CollectionType::class,array(
    'entry_type'=>newOrderCustomerType::class, 
    'allow_add' => true, 
    'by_reference' => false, 
)) 

看看是否能工程。

+0

不幸的是,Symfony的文檔,它沒有。我試圖添加和刪除各種選項,仍然沒有... – hamzo

0

如果你有一個活躍的「allow_add」選項,就可以使該輸入throught的「原型」選項:

$builder 
     ->add('customerId',CollectionType::class,array(
      'entry_type'=>newOrderCustomerType::class, 
      'allow_add' => true, 
      'by_reference' => false, 
      'data_class' => 'AppBundle\Entity\Customer', 
      'prototype'  => true, 
     )) 

,然後形式:

{{ form_row(orderForm.customerId.vars.prototype}) }} 

它應該工作。

如需更多信息,請參閱的prototype option

+0

哇!這個問題已經過去了一年。我設法找到了解決辦法。無論如何謝謝你的回答。 – hamzo

+0

@hamzo你的問題是現實直到現在))) – montie

相關問題