Ankündigung

Einklappen
Keine Ankündigung bisher.

Formular mit relationship ausgeben

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Symfony] Formular mit relationship ausgeben

    Ich habe die Schwierigkeit, ein Formular auf eine ganz bestimmte Art und Weise auszugeben und versuche dies zu verdeutlichen. Ich habe 2 Entities (Building, Floor). Es gibt also Gebäude, die mit Stockwerken verknüpft sind. Der Benutzer kann also festlegen, dass Gebäude A zum Beispiel Stockwerk A und Stockwerk B zugeordnet ist. Zur Veranschaulichung kurz die Entities und eine vereinfachte Datenbank-Struktur:

    PHP-Code:
    <?php

    namespace AppBundle\Entity;

    use 
    Doctrine\Common\Collections\ArrayCollection;
    use 
    Doctrine\ORM\Mapping as ORM;

    /**
     * Building
     *
     * @ORM\Table(name="buildings")
     */
    class Building
    {
        
    /**
         * @var int
         *
         * @ORM\Column(name="id", type="integer")
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        
    private $id;

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

        
    /**
         * One Building has Many Floor
         *
         * @var ArrayCollection
         * @ORM\OneToMany(targetEntity="Association", mappedBy="building", cascade={"persist", "remove"}, orphanRemoval=TRUE)
         */
        
    protected $associations;

        [...]
    }
    PHP-Code:
    <?php

    namespace AppBundle\Entity;

    use 
    Doctrine\Common\Collections\ArrayCollection;
    use 
    Doctrine\ORM\Mapping as ORM;

    /**
     * Floor
     *
     * @ORM\Table(name="floors")
     */
    class Floor
    {
        
    /**
         * @var int
         *
         * @ORM\Column(name="id", type="integer")
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        
    private $id;

        
    /**
         * @var string
         *
         * @ORM\Column(name="title", type="string", length=5, unique=true)
         */
        
    private $title;

        
    /**
         * One Floor has Many Building
         *
         * @var ArrayCollection
         * @ORM\OneToMany(targetEntity="Association", mappedBy="floor", cascade={"persist", "remove"}, orphanRemoval=TRUE)
         */
        
    protected $associations;
    }
    PHP-Code:
    <?php

    namespace AppBundle\Entity;

    use 
    Doctrine\ORM\Mapping as ORM;

    /**
     * Association
     *
     * @ORM\Table(name="associations")
     */
    class Association
    {
        
    /**
         * @var Floor
         *
         * @ORM\Id
         * @ORM\ManyToOne(targetEntity="Floor", inversedBy="associations")
         * @ORM\JoinColumn(name="floor_id", referencedColumnName="id", nullable=FALSE)
         */
        
    private $floor;

        
    /**
         * @var Building
         *
         * @ORM\Id
         * @ORM\ManyToOne(targetEntity="Building", inversedBy="associations")
         * @ORM\JoinColumn(name="building_id", referencedColumnName="id", nullable=FALSE)
         */
        
    private $building;

        [...]
    }
    Die Entity "Association" habe ich, weil innerhalb der Tabelle weitere Felder enthalten sind, die Informationen aufnehmen. Zur Verdeutlichung noch eine beispielhafte Datenbank:

    Tabelle "floors"
    id title
    1 Floor 1
    2 Floor 2
    3 Floor 3
    4 Floor 4

    Tabelle "buildings"
    id title
    1 Building 1
    2 Building 2
    3 Building 3
    4 Building 4
    Tabelle "associations"
    id building_id floor_id
    1 1 1
    2 1 2
    3 2 1
    4 2 2
    5 2 3
    Jetzt zur Problematik: Ich versuche anhand der Struktur und Zuhilfenahme von Standard Formklassen in Symfony ein Formular zu erzeugen, dass alle Buildings anzeigt. Zu jedem Building soll dann in einem Select-Menü einer der Floors ausgewählt werden können. Ich stehe gerade scheinbar auf dem Schlauch und bekomme das nicht wie gewollt hin.

    Verdeutlichung, was ich ausgeben möchte:

    Building 1
    Menü mit Auswahlwerten Floor 1, Floor 2

    Building 2
    Menü mit Auswahlwerten Floor 1, Floor 2, Floor 3

    Abgesendetes Formular (Daten) würde dann so aussehen:

    PHP-Code:
    // Struktur [building_id][floor_id]
    // Wenn für Building 1 Floor 1 ausgewählt wurde und
    // wenn für Building 2 Floor 3 aus dem Select-Menü ausgewählt wurde
    [1][2]
    [
    2][3
    Ich habe hierbei mit verschiedenen Formklassen herumprobiert, finde aber nicht die richtige Kombination aus den Typen die ich nutzen muss. Habe bereits folgenden Ansatz gehabt:
    Formular, dass als Feldtyp 'Collection' beinhaltet und eine 'Collection' an Buildings ausgibt. Innerhalb jedes Building fehlt mir aber die Möglichkeit, dann noch einmal ein Select-Menü zu erzeugen.

    Ich hoffe das war verständlich genug und jemand kann mir auf die Sprünge / mit einem Beispiel aushelfen.

Lädt...
X