Symfony2验证 - 在TEST环境中覆盖checkMX约束

时间:2015-11-30 12:04:52

标签: php validation symfony dns symfony-forms

我有一个设置验证的Symfony表单(使用validations.yml文件中的定义)。在此表单中是一个电子邮件字段,我已添加 checkMX 验证程序约束。这在正常使用情况下工作正常。 http://symfony.com/doc/current/reference/constraints/Email.html#checkmx

然而,当运行我的测试套件时,没有互联网连接,这会阻止测试,因为验证器试图查找电子邮件地址域的DNS,并且它无法查找DNS并且必须等待超时。在任何情况下,在测试期间需要远程查找都不理想。

有没有办法从验证中删除此约束,但仅在运行 TEST 环境时?据推测,我只需要覆盖约束,但我不知道如何在每个环境中执行此操作。

由于

2 个答案:

答案 0 :(得分:0)

您可以从控制器获取环境并将其传递到表单:

$env = $this->container->get( 'kernel' )->getEnvironment();
$oForm = $this->createForm(new Form($env));

然后在你的BuildForm之前:

 public function __construct($env)
{
    $this->sEnv  = $env;
}

然后你做了测试。

答案 1 :(得分:0)