2016-09-07 1 views
3

Ich habe eine Entität Hall, die entweder eine andere hall (Subhall) oder eine stand begrüßen kann.Wie listet man die Entität in Form auf

Ich bin mit dem hall Formular fest (oder zumindest ist es das, was ich denke, bearbeitet werden muss). Ich kann nicht herausfinden, wie es ein <select> aller Anzeigen haben hall mit parent=0 Ich brauche auch eine Standardoption, die mit 0 als Wert leer sein wird

Hier meine Dateien sind:

Halle Entity :

<?php 

namespace SalonBundle\Entity; 
use Doctrine\ORM\Mapping as ORM; 

/** 
* Hall 
* 
* @ORM\Table(name="hall") 
* @ORM\Entity(repositoryClass="SalonBundle\Repository\HallRepository") 
*/ 
class Hall { 
/** 
* @var int 
* 
* @ORM\Column(name="id", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $idHall; 

/** 
* @var string 
* @ORM\Column(name="name", type="string", length=255) 
*/ 
private $name; 

    /** 
    * @var integer 
    * @ORM\Column(name="parent", type="integer", options={"default":0}) 
    */ 
    private $parent; 

    /** 
    * @var 
    * @ORM\OneToMany(targetEntity="SalonBundle\Entity\Stand", mappedBy="hall") 
    */ 
    private $stand; 

public function __construct() 
{ 
$this->stand = new \Doctrine\Common\Collections\ArrayCollection(); 
} 

/** 
* Get idHall 
* @return integer 
*/ 
public function getIdHall() 
{ 
return $this->idHall; 
} 

/** 
* Set name 
* @param string $name 
* @return Hall 
*/ 
public function setName($name) 
{ 
$this->name = $name; 

return $this; 
} 

/** 
* Get name 
* @return string 
*/ 
public function getName() 
{ 
return $this->name; 
} 

    /** 
    * Set parent 
    * @param integer $parent 
    * @return Hall 
    */ 
    public function setParent($parent) 
    { 
     $this->parent = $parent; 

     return $this; 
    } 

    /** 
    * Get parent 
    * @return string 
    */ 
    public function getParent() 
    { 
     return $this->parent; 
    } 

/** 
* Add stand 
* @param \SalonBundle\Entity\Stand $stand 
* @return Hall 
*/ 
public function addStand(\SalonBundle\Entity\Stand $stand) 
{ 
$this->stand[] = $stand; 

return $this; 
} 

/** 
* Remove stand 
* @param \SalonBundle\Entity\Stand $stand 
*/ 
public function removeStand(\SalonBundle\Entity\Stand $stand) 
{ 
$this->stand->removeElement($stand); 
} 

/** 
* Get stand 
* @return \Doctrine\Common\Collections\Collection 
*/ 
public function getStand() 
{ 
return $this->stand; 
} 

    /** 
    * toString 
    * @return string 
    */ 
    public function __toString() { 
     return $this->getName(); 
    } 
} 

Halle Form:

<?php 

namespace SalonBundle\Form; 

use SalonBundle\Entity\Hall; 
use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\FormBuilderInterface; 
use Symfony\Component\OptionsResolver\OptionsResolver; 

class HallType extends AbstractType 
{ 
/** 
* @param FormBuilderInterface $builder 
* @param array $options 
*/ 
public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
$builder 
->add('name') 
->add('parent') // Need to complete this part 
; 
} 

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

Wie soll ich fortfahren?

Antwort

3

Mit der Option 'query_builder' Sie die Entitäten filtern:

http://symfony.com/doc/current/reference/forms/types/entity.html#ref-form-entity-query-builder

$builder->add('users', EntityType::class, array(
    'class' => 'AppBundle:User', 
    'query_builder' => function (EntityRepository $er) { 
     return $er->createQueryBuilder('u') 
     ->orderBy('u.username', 'ASC'); 
    }, 
    'choice_label' => 'username', 
)); 
+0

Gut, fand es heraus dank dem Code exepleple ... Gerade die freie Wahl jetzt verfehlend ... :) – Preciel

+2

'erforderlich' => falsch – Phex

2

Ich denke, man Lehre versuchen verwenden, so die EntityType:

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

    $builder->add('nom') 
     ->add('description') 
     ->add('parent', EntityType::class, [ 
      'class' => 'SalonBundle:Hall', 
      'choice_label' => 'nom', 
      'choice_value' => 'idHall' 
     ]) 
     ->add([...]); 

} 
+0

ich meinen ursprünglichen Beitrag bearbeitet, einige Daten waren nutzlos und einige nicht übersetzt ... Es funktioniert, obwohl noch ein paar Punkte fehlen. Wie filtere ich, um nur Hallen zu haben, in denen 'Elternteil = 0' ist und ich eine Standardwahl benötige, die als Name leer ist, und 0 als Identifikation – Preciel

Verwandte Themen