2017-12-17 4 views
0

Ich versuche, eine persönliche Anwendung zu verbessern, aber ich bekomme Probleme mit einem Einbettungsformular. In der Tat habe ich ein advertType-Formular, in dem ich ein Feld hinzufügen möchte, um die Fähigkeit und das Niveau zu wählen, das der Anzeige beigefügt ist.Symfony einbetten Formular ManyToOne Beziehung

Auf diese Weise habe ich eine Anzeigenentität, eine Skill-Entity, eine advertSkill-Entität, die Anzeigen- und Skill-Entitäten dank einer OneToMany-Beziehung referenziert. Das Ebenenattribut stammt von der Entität advertSkill.

Ich weiß nicht, wie man vorgeht, um ein Fertigkeitsfeld in meiner Anzeigeform hinzuzufügen, damit die Anzeige korrekt mit der entsprechenden Fertigkeit und dem Niveau gespeichert wird.

In meiner Anzeigenentität gibt es kein Attribut, das auf Fertigkeit verweist.

Im Folgenden wird eine Probe meiner advertType Klasse:

$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); 

Vielen Dank für Hilfe, ich kann mehr Details über meinen Code geben, aber es ist nur hässlich, wenn ich mit der einen Code setzen.

+0

Warum eine advertSkill-Einheit? Welche Eigenschaften hat es? Welche Beziehungen hast du genau zwischen all deinen Entitäten? –

+0

AdvertSkill Einheit enthält die folgenden Eigenschaften: id, Ebene, Anzeige (ManyToOne der Anzeige juristische Person), Geschicklichkeit (ManyToOne der Geschicklichkeit Einheit) Fähigkeit Einheit enthält: ID, Name Anzeige Einheit enthält: id, Datum, Titel, Autor, Inhalt, veröffentlicht, Bild, Kategorien, Anwendungen, updatedAt, nbApplication, E-Mail, Slug, IP, Benutzer –

Antwort

0

Ich habe versucht, ein paar Ratschläge zum gleichen Problem wie ich auf einem französischen Forum zu lesen, aber ich habe einen Fehler, weil ich es nicht geschafft habe, meinen Skillnamen und meinen Levelnamen anzuzeigen.

Meine AdvertType Form Klasse:

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); 

Meine neue AdvertType Formularklasse:

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') 
     )); 
} 

Außerdem hat ich ein OneToMany Attribut "advertSkill" in den beiden Klassen von der advertSkill Klasse verwiesen hinzugefügt.

Ich verstehe nicht, wie es funktioniert!

Verwandte Themen