2017-03-23 2 views
0

Ich habe eine einfache Entitätstyp „City“ bekamKlasse Einschränkung in Zug arbeiten nicht

class City 
{ 

    use GeoTrait; 

    /** 
    * @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; 

    ... 

} 

, wie Sie es verwendet einen Trait sehen, die wie dieser nun

use AppBundle\Validator\Constraint as AppConstraint; 

/** 
* @AppConstraint\IsDuplicateLocation 
* @AppConstraint\IsLocation 
*/ 
trait GeoTrait 
{ 
     /** 
    * @var string 
    * 
    * @ORM\Column(name="geoLat", type="decimal", nullable = true, precision=9, scale=6) 
    */ 
    private $geoLat; 
    /** 
    * @var string 
    * 
    * @ORM\Column(name="geoLng", type="decimal", nullable = true, precision=9, scale=6) 
    */ 
    private $geoLng; 
} 

aussieht, wenn Ich erstelle eine neue Entität und versuche, sie mithilfe des Validierungsdienstes zu validieren. Sie scheint meine benutzerdefinierten Klasseneinschränkungen nicht zu überprüfen.

Wenn ich dem Merkmal eine Feldeinschränkung hinzufüge, funktioniert die Validierung gut, aber nicht für die Klasseneinschränkung. Warum funktioniert das nicht?

Antwort

0

Eine Eigenschaft ist keine Klasse, daher können Sie sie nicht in Ihrer benutzerdefinierten Methode "getTargets()" beschränken.

Versuchen Sie, Ihre Klasse Zwänge in die Stadt Klasse Hinzufügen

/** 
* @AppConstraint\IsDuplicateLocation 
* @AppConstraint\IsLocation 
*/ 
class City 
{ 
    ... 
} 
+0

, die Arbeit ist, wenn ich eine neue Einheit mit einem Formular erstellen. Aber wenn ich den Validator-Service wie in diesem Beispiel verwende: http://symfony.com/doc/current/validation.html#using-the-validator-service gibt es keine Fehler (obwohl es sollte) – casper

+0

@ casper Es sollte Arbeit. Ich habe es gerade getestet. Veröffentlichen Sie eine Ihrer Einschränkungen und ihren Validatorcode, damit wir sie analysieren können. –