Symfony2: Entität behauptet, die akzeptieren ein array von Typen?
Ich habe ein Unternehmen mit dem Feld $Unternehmen.
Dieses Feld hat für das speichern einer Reihe von Unternehmen Objekte. So beschrieb ich behaupten, auf diese Weise:
@Assert\Type("Acme\MyBundle\Entity\Company")
Aber es ist immer ungültig, weil aus meinem Formular habe ich erhalten Auswahl von Unternehmen, aber diese geltend machen will, es sein kein array, sondern nur ein Unternehmen.
So, wie dies zu überwinden? Ich nehme an, dass es etwas wie das:
@Assert\Array(Type("Acme\MyBundle\Entity\Company"))
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da die Frage ist tagged für Symfony2.x, der Vollständigkeit halber muss ich darauf hinweisen, dass die neue Validierung Einschränkung Alle eingeführt seit version 2.1 kann tun die ganze Arbeit.
Für jedes array oder begehbare Objekte (z.B. eine Lehre
ArrayCollection
), können Sie Folgendes tun:So, die Symfony2.1 Benutzer das liest, deine Frage sollte lieber dieses elegante und saubere Lösung.
Gibt es keine built-in-Einschränkung, die würden Ihren Anforderungen entsprechen, daher müssen Sie definieren Ihre eigenen.
Constraint-definition:
Validator-definition:
Den oben genannten validator arbeitet für beide, collections und arrays.
Bearbeiten (2011-06-29)
Importieren Sie Ihre eigenen Einschränkungen:
Verwenden Anmerkungen Einschränkungen Sie haben, um Ihnen zu ermöglichen, in confirguartion Datei:
public function getTargets() { return self::PROPERTY_CONSTRAINT; }
- und jetzt wird es nicht fallen, mit Fehlern, aber immer sagt der mir "Diese Sammlung sollte der Typ Meiner\TestBundle\Entity\Company" Es ist seltsam, denn ich bin sicher, dass ich richtige Werte in der form: es 100% ist Instanz von UnternehmenConstraint::getTargets()
- Methode wird nicht mehr definiert als abstrakte. Aber das ist kein problem, einfach kopieren, dass die definition in Ihren eigenen constraint-Klasse.