Gibt es eine Möglichkeit, auf die Entität der Eigenschaft zuzugreifen, die gerade in einem benutzerdefinierten Constraint-Validator validiert wird, und wenn ja, wie? Soweit ich sehen kann, habe ich nur Zugriff auf den Wert (und alle Dienste, die ich wählen könnte, natürlich zu injizieren).
Ich hatte das auch nötig. Hier finden Sie ein vollständiges Beispiel:
Die Entität:
%Vor%Die Einschränkung:
%Vor%Der Constraint-Validator:
%Vor%Und die Erklärung als Dienst:
%Vor%Der Exit-Vardump, den ich gesetzt habe, bringt mir den Namen der Entity-Klasse, es funktioniert!
Ja, es gibt einen Weg. Validierer für Klasseneinschränkungen hat eine vollständige Entität im Gültigkeitsbereich.
Falls Sie über einen Property-Validator verfügen, können Sie auch über Validator über ExecutionContext auf das validierte Objekt zugreifen:
%Vor%Ey, nun, es hängt davon ab, wie du die Entität validierst. Zum Beispiel validiere ich meine Entität durch ein Formular. Um die Entität in den ConstraintValidator zu bekommen, muss ich nur das Kontextstammverzeichnis abrufen und die Daten aus meinem Formular abrufen:
%Vor%Tags und Links symfony