2015-11-30 53 views
2

我有一個Symfony表單,包含驗證設置(使用validations.yml文件中的定義)。在這個表單中是一個電子郵件字段,我已經添加了驗證器約束條件checkMX。這在正常使用情況下正常工作。 http://symfony.com/doc/current/reference/constraints/Email.html#checkmxSymfony2驗證 - 覆蓋TEST環境中的checkMX約束條件

但是,在運行我的測試套件時,如果沒有互聯網連接,當驗證器試圖查找電子郵件地址域的DNS並停止查找DNS並等待時間到。在任何情況下,在測試期間需要進行遠程查詢都不是理想的。

有沒有辦法從驗證中刪除這個約束,但只有在測試環境運行?據推測,我只需要重寫約束,但我不知道如何做到這一點每個環境。

感謝

+1

取決於哪個版本使用框架,你可以看看[這裏](http://symfony.com/doc/ current/reference/configuration/framework.html#strict-email) – Matteo

回答

0

您可以從控制器讓你的環境,並把它傳遞給你的表格:

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

那麼你BuildForm前:

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

然後,你做你的測試。

+1

感謝您的回答,但我希望在全球範圍內完成此操作,而不是基於每個表單。 – Benr77