Ankündigung

Einklappen
Keine Ankündigung bisher.

Gelöst: Doctrine Entity Properties mit Custom Options

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

  • Gelöst: Doctrine Entity Properties mit Custom Options

    Hallo zusammen,

    ich versuche das was hier in der Symfony Doku mit YAML Definitionen umgesetzt ist, auf Entitys zu übertragen, die mit PHP definiert sind:

    https://symfony.com/doc/master/bundl...operty-options

    Nur leider finde ich in der Doctrine Doku dazu nichts. Da ich mit Zend Framework arbeite und alle Entitys per PHP definiert sind, hilft die Symfony Doku nur bedingt weiter.
    Ich suche auch eine Möglichkeit, in einem ZF Controller dann auf diese Option zuzugreifen.

    Hier ein Beispiel:

    PHP-Code:
    <?php

    class Message
    {
        
    /** @Column(type="integer") */
        
    private $id;
        
    /** @Column(type="text", name="text") */
        
    private $text;
        
    /** @Column(type="datetime", name="posted_at") */
        
    private $postedAt;
    }

    Die Property $postedAt soll jetzt über die Annotations eine Option showInList: true bekommen und $text soll die Option showInList: false bekommen.
    Hiermit will ich steuern, welche Felder in einer Listenansicht angezeigt werden sollen und welche nicht. Das ganze ist dann Teil eines möglich dynamischen CRUD-Controllers und soll daher nicht irgendwo hartcodiert sein, sondern direkt im Entity definiert werden können.

    Wäre für jeden Tipp sehr dankbar!


  • #2
    Das ist die Dokumentation vom EasyAdminBundle welche erstmal so nichts mit Doctrine/Symfony zu tun hat. Deswegen findest du dazu auch nichts in der Doctrine Dokumentation. Wenn du das Bundle verwenden möchtest, musst du wohl auf Symfony umsteigen, oder es für Zend entsprechend neu schreiben.

    Kommentar


    • #3
      Danke für den Hinweis Zeichen32
      Das ist mir dann vorhin auch aufgefallen. Dachte aber, es gäbe vielleicht auch eine Doctrine eigene Möglichkeit ohne Symfony.

      Ich habe aber jetzt herausgefunden, dass es eine Comment-Option gibt, vielleicht mache ich es darüber.


      Edit: Habe es jetzt hinbekommen:

      PHP-Code:
          /**
           * @ORM\Column(name="whatever", type="string", options={"show":"true"})
           */ 
      Und dann im Controller mit dem Doctrine AnnotationReader und Reflection auslesen:

      PHP-Code:
          $reader = new \Doctrine\Common\Annotations\AnnotationReader();

          
      $reflClass = new \ReflectionClass($entity);
          
      $properties $reflClass->getProperties();

          foreach(
      $properties as $property) {
            
      $annotations $reader->getPropertyAnnotations($property);
            
      var_dump($annotations[0]->options); // array:1 ["show" => "true"]
          

      Kommentar

      Lädt...
      X