2017-03-01 1 views
0

Ich benutze Gedmo Erweiterung zusätzlich mit Symfony 3.2 und Doctrine 2.5.6 und ich stoße auf ein Problem. Ich kann Gedmo \ Blameable und UniqueEntity Constraint nicht zusammen arbeiten lassen. Tatsächlich ist das beschuldigte Feld zur Validierungszeit noch null. Gibt es einen Weg, um es zu funktionieren oder eine mögliche Umgehung?Verwenden Sie UniqueEntity auf einem Gedmo Blameable Feld

Hier ist meine Einheit

/** 
* @UniqueEntity(
*  fields={"author", "question"}, 
*  errorPath="question", 
*  message="This author already has an answer for that Question" 
*) 
* @ORM\Entity 
*/ 
class TextAnswer 
{ 

    /** 
    * @ORM\ManyToOne(targetEntity="User") 
    * @ORM\JoinColumn(name="user_id", referencedColumnName="id") 
    * @Gedmo\Blameable(on="create") 
    */ 
    private $author; 

    /** 
    * @Assert\NotNull() 
    * @ORM\ManyToOne(targetEntity="Question", inversedBy="textAnswers") 
    * @ORM\JoinColumn(name="question_id", referencedColumnName="id") 
    */ 
    private $question; 
} 

Dank

EDIT: SOLUTION

Anstatt manuell den Benutzereinstellungen (die Gedmo \ tadelnswert Interessen entfernt), ich meine eigene Entität Validator erstellt . Ich gebe es Doktrin und Token-Speicher als Argumente, so dass es eine Abfrage auf db machen kann, um meine Kriterien mit dem aktuell verbundenen Benutzer (der später von Gedmo \ Blameable verwendet wird) zu validieren.

+0

Dachte das war in einer fremden Sprache zuerst _EinheitEinheit Gedmo Blameable_ – AbraCadaver

Antwort

0

Die BlameableListener wird während der Entleerung der Doctrine aufgerufen, was normalerweise nach der Validierung der Entität geschieht. Deshalb ist $authornull zur Validierungszeit.

Die einfachste Problemumgehung besteht darin, vorher $author selbst zu setzen.

Verwandte Themen