E-postanın kimliği belirli bir alana ait değilse, e-posta kimliğindeki bir doğrulama koymam gereken bir kayıt formu üzerinde çalışıyorum. Kişinin bu soruya yanıt vermemesi gerekir varsayılan olarak symfony, açabileceğim ya da özel bir doğrulama oluşturmam gereken bu doğrulama seçeneğine sahip mi? e-posta kimliği yahoo.com
Symfony - Belirli alan adından kaydını durdurma
cevap
Hayır, etki alanı e-postası için symfony2'de yerleşik bir özellik yok. Ama ekleyebilirsin. Yapabilecekleriniz creating a custom constraint. Yeni doğrulayıcı kullanabilirsiniz Bundan sonra
namespace AppBundle\Validator\Constraints;
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;
class EmailDomainValidator extends ConstraintValidator
{
public function validate($value, Constraint $constraint)
{
$explodedEmail = explode('@', $value);
$domain = array_pop($explodedEmail);
if (!in_array($domain, $constraint->domains)) {
$this->context->buildViolation($constraint->message)
->setParameter('%email%', $value)
->addViolation();
}
}
}
namespace AppBundle\Validator\Constraints;
use Symfony\Component\Validator\Constraint;
/**
* @Annotation
*/
class EmailDomain extends Constraint
{
public $domains;
public $message = 'The email "%email%" has not a valid domain.';
}
: Birisi ihtiyacı
use Symfony\Component\Validator\Constraints as Assert;
use AppBundle\Validator\Constraints as CustomAssert;
class MyEntity
{
/**
* @Assert\Email()
* @CustomAssert\EmailDomain(domains = {"yahoo.com", "gmail.com"})
*/
protected $email;
durumda
burada.yml
dosyası içinde doğrulama eklemek için bunu yapabilirsiniz nasıl .
- AppBundle\Validator\Constraints\EmailDomain:
domains:
- yahoo.com
varsa
Örneğin sadece Birkaç e-posta etki alanları için e-posta adresini test etmek Regex constraint kullanabilirsiniz insanlar kayıt olmak istiyorum. Diğer durumda kendi kısıtınızı yaratmak zorunda kalacaksınız.
Regex kısıtlamasının bu amaç için nasıl kullanılabileceği konusunda bana bir örnek verebilir misiniz? – Saadia
^[a-zA-Z] + @ (domain1 \ .com | domain2 \ .com | etc) gibi bir şeyi deneyebilirsiniz. –
Eğer e-postanın etki bahsediyoruz, soruyu düzenlemek düşünün, "e-posta id" öneri için MarianoArgañaraz sayesinde @ –
diye bir şey olduğunu. – Saadia