![](/img/trans.png)
[英]Symfony 3: GroupSequence validation groups ignored in validation of form
[英]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;
我想按以下順序驗證字段:Basic1,Basic2,注冊。
當我在類注釋中使用GroupSequence時:
/**
* @Assert\GroupSequence({"MyEntity", "Basic1", "Basic2", "Registration"})
*/
class MyEntity
{
可以正常工作,Basic1 => Basic2 =>注冊:
但是我也需要使用validation_groups ...並且當我在Type類中指定它時,GroupSequence不再起作用。
我嘗試直接在validation_groups中使用GroupSequence,但似乎不起作用,就像在這里說的那樣: https : //github.com/symfony/symfony/pull/10287
$form = $this->createForm(new BlogType(), new Blog(), [
'validation_groups' => new GroupSequence(['Basic', 'Strict']),
]);
但是我將其放入Type類中的configureOptions中:
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => 'AppBundle\Entity\MyEntyty',
'validation_groups' => new GroupSequence(['Basic1', 'Basic2', 'Registration']),
]);
}
有人知道如何同時使用GroupSequence和validation_groups嗎?
我現在發現的唯一解決方案是專門為此字段創建一個自定義驗證器...
您可以簡單地在實體字段中指定分組序列,如下所示:
/**
* @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;
希望這個幫助
此功能已被修正。
參見回購上的相應票證: https : //github.com/symfony/symfony/issues/20929
校正合並后,此解決方案應起作用。
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => 'AppBundle\Entity\MyEntyty',
'validation_groups' => new GroupSequence(['Basic1', 'Basic2', 'Registration']),
]);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.