2016-06-02 5 views
1

Ich bin auf Symfony und ich benutze Sammlungsform, um eine Website zu reservieren Tickets für eine Show.Viele Prototypen für Sammlung Typ

Die Schnittstelle ist einfach, der Benutzer wählt die Anzahl der Tickets, die er will, dann zeigt es so viel Form Prototyp als Tickets erforderlich. Dieser Teil funktioniert gut für mich.

Aber ich möchte nur 2 Feld (Name und Vorname) nicht das Alter Feld (es wird in einem anderen Teil meines Formulars gefragt werden) meiner Billet-Entität anzeigen.

In der Dokumentation sie erklären, dass Sie nur ein Feld angezeigt werden kann (wenn ich gut verstehen):

<ul class="billets" data-prototype="{{ form_widget(form.billets.vars.prototype.surname)|e }}">

Oder die alle Entity Felder:

<ul class="billets" data-prototype="{{ form_widget(form.billets.vars.prototype)|e }}">

Aber nicht 2 Felder, denn wenn ich das versuche, es nur das erste Feld anzuzeigen:

<ul class="billets" data-prototype="{{ form_widget(form.billets.vars.prototype.name)|e }}"> 
 
    
 
    <ul class="billets" data-prototype="{{ form_widget(form.billets.vars.prototype.surname)|e }}">

Hier mein Billet-Typ ist:

class BilletType extends AbstractType 
 
{ 
 
    public function buildForm(FormBuilderInterface $builder, array $options) 
 
    { 
 
     $builder 
 
      ->add('surname', TextType::class) 
 
      ->add('name', TextType::class) 
 
      ->add('dateOfBirth', BirthdayType::class) 
 
     ; 
 
    } 
 
}

Here is what I want to get

Antwort

0

Felder zu vermeiden Rendering ich es auf diese Weise mit der Option: {'render_rest': false}) }

{{ form_widget(edit_form._token) }}// mandatory but hidden 
{{ form_end(edit_form, {'render_rest': false}) }} //closing the form 

Auf diese Weise nur in Zweig angegebenen Felder wiedergegeben werden.

+0

jede Aktualisierung auf das? –

+0

Ja, es hat gut funktioniert Entschuldigung für die Nicht-Antwort –

0

Try this:

individuelle BilletType wie folgt erstellen:

class CustomBilletType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('surname', TextType::class) 
      ->add('name', TextType::class) 
     ; 
    } 
} 

imbricate diese CustomFormType in der Hauptform:

class BilletType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('billets', CollectionType::class, array(
       'entry_type' => new CustomBilletType, 
       'allow_add' => true, 
       'allow_delete' => true, 
       'by_reference' => false, //use this for set dateOfBirth for all billet in your collection 
      )) 
      ->add('dateOfBirth', BirthdayType::class) 
     ; 
    } 
} 

Sie dateOfBirth Feld mit nur Ihre Sammlung von Barren haben .

Für Ihre dateOfBirth für alle Knüppel bestehen, siehe in Einheit wie folgt aus:

/** 
* Constructor 
*/ 
public function __construct() 
{ 
    $this->billets = new ArrayCollection(); 
} 

/** 
* Add billets 
* 
* @param \AppBundle\Entity\Billet $billet 
* @return Billet 
*/ 
public function addBillet(Billet $billet) 
{ 
    $this->billets[] = $billet; 
    $billet->setDateOfBirth($this->dateOfBirth); //Set the same date for all your billet 
    return $this; 
} 

Ich hoffe, ich verstehe Ihr Problem ..