2017-12-17 50 views
0

私は個人的なアプリケーションを改善しようとしていますが、埋め込みフォームに問題が生じています。実際には、私は、スキルと広告に添付されたレベルを選択するためにフィールドを追加したいadvertTypeフォームを持っています。Symfony埋め込みフォームManyToOneの関係

このようにして、私は広告エンティティ、スキルエンティティ、広告とスキルエンティティを参照しているadvertSkillエンティティをOneToMany関係に持っています。 level属性は、advertSkillエンティティからのものです。

アドバタイジングフォームにスキルフィールドを追加する方法がわからないので、広告が適切なスキルとレベルで正しく保存されます。

私の広告エンティティには、スキルを参照している属性はありません。以下は

、私advertTypeクラスのサンプル:助けを

$builder 
     ->add('date',  DateTimeType::class, array(
      'view_timezone' => 'Europe/Paris', 
      'with_seconds' => true    
     )) 
     ->add('title',  TextType::class) 
     ->add('content', TextareaType::class) 
     ->add('author',  TextType::class) 
     ->add('email',  TextType::class) 
     ->add('image',  ImageType::class) 
     ->add('categories', EntityType::class, array(
      'class'    => 'OCPlatformBundle:Category', 
      'choice_label'  => 'name', 
      'multiple'   => true 
     )) 
     ->add('save',  SubmitType::class); 

おかげで、私は自分のコードの詳細を与えることができますが、私はいくつかのコードを入れたとき、それはただ醜いです。

+0

なぜadvertSkillエンティティですか?どのような特性がありますか?すべてのエンティティの間にどのような関係がありますか? –

+0

Advertisementエンティティには、id、level、advert(広告エンティティへのManyToOne)、skill(スキルエンティティへのManyToOne)、 、 の各プロパティが含まれています。著者、コンテンツ、公開、画像、カテゴリ、アプリケーション、updatedAt、nbアプリケーション、電子メール、スラッグ、IP、ユーザー –

答えて

0

私はフランスのフォーラムで私と同じ問題についていくつかのアドバイスを先読みしようとしましたが、スキル名とレベル名の表示に成功しなかったので、まだ間違いがあります。

マイAdvertTypeフォームクラス:

enter code here   $builder 
     ->add('date',  DateTimeType::class, array(
      'view_timezone' => 'Europe/Paris', // On affiche l'horaire avec le fuseau horaire de Paris 
      'with_seconds' => true    // On ajoute les secondes àl'affichage de l'horaire 
     )) 
     ->add('title',  TextType::class) 
     ->add('content', TextareaType::class) 
     ->add('author',  TextType::class) 
     ->add('email',  TextType::class) 
     ->add('image',  ImageType::class) 
     ->add('categories', EntityType::class, array(
      'class'    => 'OCPlatformBundle:Category', 
      'choice_label'  => 'name', 
      'multiple'   => true 
     )) 
     ->add('advertSkill', CollectionType::class, array(
      'entry_type'  => AdvertSkillType::class 
     )) 
     ->add('save',  SubmitType::class); 

私の新しいAdvertTypeフォームクラス:

enter code here  public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add('advertSkill', EntityType::class, array(
      'class'     => 'OCPlatformBundle:Skill', 
      'choice_label'   => 'name' 
     )) 
     ->add('level', EntityType::class, array(
      'class'    => 'OCPlatformBundle:AdvertSkill', 
      'choices'   => array('Débutant', 'Intermédiaire', 'Expert') 
     )); 
} 

はまた、私はadvertSkillクラスで参照される二つのクラスにOneToMany属性 "advertSkill" を追加しました。

私はそれを動作させる方法を理解していません!

関連する問題