2016-11-24 5 views
0

CollectionTypeを使用しているときにフォームの表示に問題があります。 newOrderCustomerTypeの入力は表示されず、「Customer 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'; 
    } 
} 

そしてTWIGテンプレートで、それはすべての入力FIを示して作る方法

{{ 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

うわー!その問題から1年経ちました。私は周りの仕事を見つけることができた。いずれにせよ答えに感謝します。 – hamzo

+0

@hamzoあなたの質問は今まで) – montie

関連する問題