2016-09-21 7 views
0

注文書のdeatilsで購入注文を維持するために、1対多の関係を表現したいと思います。購入詳細注文リストを各ディテールのテーブル行をインクリメントして追加しようとしました。私は、このエラー=>タイプ「PurchaseOrderDetailType」をロードできませんでしたを得た後、このカスタムフォームフィールドを読み込めませんでした。Symfony 3で入力してください

class PurchaseOrderType extends AbstractType 
    { 
     /** 
* @param FormBuilderInterface $builder 
* @param array $options 
*/ 
public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add('supplier',EntityType::class, array(
      'class' => 'AppBundle:Supplier', 
      'label'=>'Supplier', 
      'query_builder' => function (EntityRepository $er) { 
       return $er->createQueryBuilder('supplier') 
        ->orderBy('supplier.name', 'ASC'); 
      }, 
      'choice_label' => 'name', 
     )) 
     ->add('purchaseOrderDetails',CollectionType::class,array(
      'entry_type' => PurchaseOrderDetailType::class, 
      'allow_add' => true 
     )) 
     ->add('status'); 
} 

/** 
* @param OptionsResolver $resolver 
*/ 
public function configureOptions(OptionsResolver $resolver) 
{ 
    $resolver->setDefaults(array(
     'data_class' => 'AppBundle\Entity\PurchaseOrder' 
    )); 
} 
} 

ようPurchaseOrderTypeのクラスでそれを使用して次に

class PurchaseOrderDetailType extends AbstractType{ 


    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
    $builder->add('item',EntityType::class, array(
     'class' => 'AppBundle:InvtItem', 
     'query_builder' => function (EntityRepository $er) { 
      return $er->createQueryBuilder('item') 
       ->orderBy('item.description', 'ASC'); 
     }, 
     'choice_label' => 'description', 
    )) 
     ->add('unit_price') 
     ->add('qty') 
     ->add('price'); 

    } 

    /** 
    * @param OptionsResolver $resolver 
    */ 
    public function configureOptions(OptionsResolver $resolver) 
    { 
    $resolver->setDefaults(array(
     'data_class' => 'AppBundle\Entity\PurchaseOrderDetails' 
    )); 
    } 
} 

を次のように、 私はPurchaseOrderDetailTypeフォームタイプを開発しました10 500内部サーバーエラー - InvalidArgumentException

+0

あなたはsymfonyの3もしくはsymfony 2.8とEntityType ::クラスの構文を使用している場合、あなたは入れなければならないの名前空間を逃しましたEntityType; ' –

+0

ええ私はすべてのライブラリを正しくインポートしました。私はここでそれらを言及しませんでした。 – Sameera

答えて

2

それは、このためのものであってもよい -

EntityTypeフィールド - Doctrineのエンティティからオプションをロードするように設計されています特別なChoiceTypeフィールド。

エンティティタイプが一つだけ必要なオプションを持っている:選択フィールド内に表示されなければならないエンティティ:

use Symfony\Bridge\Doctrine\Form\Type\EntityType; 
// ... 

$builder->add('users', EntityType::class, array(
    // query choices from this entity 
    'class' => 'AppBundle:User', 

    // use the User.username property as the visible option string 
    'choice_label' => 'username', 

    // used to render a select box, check boxes or radios 
    // 'multiple' => true, 
    // 'expanded' => true, 
)); 

は、だから、最初に次のように使用する必要があります。

use Symfony\Bridge\Doctrine\Form\Type\EntityType; 

そして

entityEntityType::classを交換してみてください。

更新:

私が思うに、symfonyの3では、あなたの代わりにフォーム(またはサービスへの文字列参照)のインスタンスのFQCN(完全修飾クラス名)を使用する必要があります。 `symfonyの\橋\教義\フォーム\タイプ\を使う -

+0

私はあなたの提案をしましたが、同じエラーがまだ発生しています。 – Sameera

+0

カスタムフォームタイプを登録しますか? – Sameera

+0

私はいつもFQCNを使いました。 – Sameera

0

私はちょうどクラスPurchaseOrderDetailTypeので

関連する問題