하나의 폼에서 사용되는 여러 개의 엔터티가 추상 클래스에서 확장됩니다. 각 엔티티에 대한 양식 유형을 작성한 다음 상위 양식에 포함 시켰습니다.Symfony 임베디드 폼 유효성 검사
전자 메일 유형은 Assert \ NotBlank (기본 그룹) 및 Assert \ Email (전자 메일 그룹)에서만 "elemento"속성을 검사해야하므로 Telefono는 Assert \ NotBlank를 확인해야합니다 (그룹을 기준으로 유효성 검사를 수행하고 싶습니다. 기본 그룹) 및 Assert \ Regex (전화 그룹).
내 구성에서는 두 가지 검사 (제약 조건)가 수행되므로 전자 메일 제약 조건 AND 정규식에서 전자 메일을 검사하므로 전화가 ... 어디에서 잘못 되었습니까? 컬렉션의 이메일과 전화에
직원 엔티티는
부모 폼 그런
<?php
namespace App\Form\Staff;
class StaffType extends AbstractType {
public function configureOptions(OptionsResolver $resolver) {
$resolver->setDefaults(['data_class' => \Cowbell\Entity\Staff\Staff::class,
'validation_groups' => ['Default', 'email', 'phone']]);
}
/**
*
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options) {
// ... Other field of Staff Entity
->add('emails', CollectionType::class, ['label' => 'admin.emails',
'entry_type' => \App\Form\Contatto\CBEmailType::class,
'entry_options' => ['label' => false],
'allow_add' => true,
'allow_delete' => true,
'empty_data' => null,
'translation_domain' => 'admin',
'validation_groups' => ['email']])
->add('telefoni', CollectionType::class, ['label' => 'admin.phones',
'entry_type' => \App\Form\Contatto\CBTelefonoType::class,
'entry_options' => ['label' => false],
'allow_add' => true,
'allow_delete' => true,
'empty_data' => null,
'translation_domain' => 'admin',
'validation_groups' => ['phone']]);
}
}
CBEmailType
<?php
namespace App\Form\Contatto;
class CBEmailType extends AbstractType{
/**
*
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(['data_class' => \App\Entity\Contatto\Email::class,
'validation_groups' => ['Default', 'email']]);;
}
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->add('elemento', EmailType::class, ['label' => 'admin.email',
'translation_domain' => 'admin'])
}
}
에게 어설 \ 유효() contraint
이것은 예입니다을 구성한 CBTelefonoType
당신이CollectionType
양식 필드 (RESP에
validation_groups
를 설정할 수 없습니다 AFAIK
<?php
namespace App\Form\Contatto;
class CBTelefonoType extends AbstractType{
/**
*
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(['data_class' => \Cowbell\Entity\Contatto\Telefono::class,
'validation_groups' => ['Default', 'phone']]);
}
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->add('elemento', TextType::class, ['label' => 'admin.phone',
'translation_domain' => 'admin'])
}
}
모두, 이메일 및 Telefono는
<?php
namespace App\Entity\Contact;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
abstract class AbstractElementoContact {
/**
*
* @var string
*
* @ORM\Column(name="elemento", type="string", length=100, nullable=false)
* @Assert\NotBlank()
* @Assert\Email(strict=true, checkHost=true, checkMX=true, groups={"email"})
* @Assert\Regex("/[0-9]{6,50}/", groups={"phone"})
*/
protected $elemento;
대단히 감사합니다. 'validation_groups'속성은 저를 그릇 인도하고 유효성 검사를 "안내하는"데 사용될 수 있다고 생각했습니다. 다시 감사합니다. –