2016-12-04 5 views
1

In meinem Unternehmen habe ich das Feld:Symfony 3: GroupSequence in validation_groups

/** 
* @Assert\Regex("/^[a-z0-9-]+$/", groups={"Basic1"}) 
* @Assert\Regex("/^[a-z0-9]+[a-z0-9-]*[a-z0-9]+$/", groups={"Basic2"}) 
* @AppAssert\SaveDomain(groups={"Registration"}) 
*/ 
protected $myField; 

Ich mag Felder validieren, in dieser Reihenfolge: Basic1, Basic2, Registrierung.

Wenn ich GroupSequence in Klasse Annotation:

/** 
* @Assert\GroupSequence({"MyEntity", "Basic1", "Basic2", "Registration"}) 
*/ 
class MyEntity 
{ 

Es funktioniert wie erwartet, Basic1 => Basic2 => Anmeldung:

Aber ich brauche auch validation_groups verwenden ... Und wenn ich Geben Sie es in der Type-Klasse an, GroupSequence funktioniert nicht mehr.

Ich versuche GroupSequence direkt in validation_groups zu verwenden, aber es scheint, funktioniert nicht wie es hier gesagt wird: https://github.com/symfony/symfony/pull/10287

$form = $this->createForm(new BlogType(), new Blog(), [ 
    'validation_groups' => new GroupSequence(['Basic', 'Strict']), 
]); 

Aber ich es in die Typklasse in configureOptions bin setzen:

public function configureOptions(OptionsResolver $resolver) 
{ 
    $resolver->setDefaults([ 
     'data_class' => 'AppBundle\Entity\MyEntyty', 
     'validation_groups' => new GroupSequence(['Basic1', 'Basic2', 'Registration']), 
    ]); 
} 

Jemand weiß, wie ich GroupSequence und validation_groups gleichzeitig verwenden kann?

Die einzige Lösung, die ich jetzt gefunden ist ein benutzerdefinierten Validator specificly für dieses Feld ...

Antwort

0

Diese Funktion wurde abgehört.

Siehe entsprechendes Ticket für Repogeschäfte: https://github.com/symfony/symfony/issues/20929

Diese Lösung nach der Korrektur merge funktionieren soll.

public function configureOptions(OptionsResolver $resolver) 
{ 
    $resolver->setDefaults([ 
     'data_class' => 'AppBundle\Entity\MyEntyty', 
     'validation_groups' => new GroupSequence(['Basic1', 'Basic2', 'Registration']), 
    ]); 
} 
0

Sie können einfach die groupsequence in der Entität Feld wie folgt angeben erstellen:

dieser
/** 
* @Assert\GroupSequence({"Basic1", "Basic2", "Registration"}) 
*/ 
class MyEntity 
{ 

/** 
* @Assert\Regex("/^[a-z0-9-]+$/", groups={"Basic1"}) 
* @Assert\Regex("/^[a-z0-9]+[a-z0-9-]*[a-z0-9]+$/", groups={"Basic2"}) 
* @AppAssert\SaveDomain(groups={"Registration"}) 
*/ 
protected $myField; 

Hoffnung Hilfe

+0

Ich mache das bereits, aber wenn ich validation_groups in der Klasse Type hinzufügen, funktioniert es nicht mehr. – Atyz