電子メールIDが特定のドメインに属していない場合、私の質問に登録することができない登録フォームを作成しています。 symfonyはデフォルトでこの検証オプションを持っていますか?これを有効にするか、カスタム検証を作成する必要がありますか?例えばSymfony - 特定のドメインからの登録を制限する
私は唯一の電子メールIDは、あなたは、いくつかの電子メールドメインの電子メールアドレスをテストするためにRegex constraintを使用することができますyahoo.com
電子メールIDが特定のドメインに属していない場合、私の質問に登録することができない登録フォームを作成しています。 symfonyはデフォルトでこの検証オプションを持っていますか?これを有効にするか、カスタム検証を作成する必要がありますか?例えばSymfony - 特定のドメインからの登録を制限する
私は唯一の電子メールIDは、あなたは、いくつかの電子メールドメインの電子メールアドレスをテストするためにRegex constraintを使用することができますyahoo.com
いいえ、ドメインチェックのためのsymfony2のビルドイン機能はありません。しかし、あなたはそれを追加することができます。できることはcreating a custom constraintです。その後
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.';
}
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();
}
}
}
新しいバリデータを使用することができます誰かがここに.yml
ファイル内の検証を追加する必要がある場合には
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;
をあなたがそれを行うことができる方法であります。
- AppBundle\Validator\Constraints\EmailDomain:
domains:
- yahoo.com
を持っている場合、人々が登録したいです。それ以外の場合は、独自の制約を作成する必要があります。
この目的のためにRegexの制約をどのように使用できるかの例を教えてください。 – Saadia
あなたは^ [a-zA-Z] + @(domain1 \ .com | domain2 \ .com |など)$ –
あなたは、電子メールのドメインについて話している、質問を編集して考えてみて、「電子メールID」の提案のためのMarianoArgañaraz感謝@ –
のようなものではありません。 – Saadia