2014-05-08 27 views
3

我想知道如何使用驗證器服務對實體執行級聯驗證。使用Symfony2對實體進行級聯驗證

使用:

$validator = $this->get('validator'); 
$errorList = $validator->validate($entity); 

不執行 「實體」 兒童實體的驗證。

我很確定它可以完成,因爲它可能使用表單驗證(使用'cascade_validation' => true)。

回答

5

我認爲(默認情況下)不會對指向對象的屬性進行驗證。對於validate()方法設置爲truethe traverse option的陣列可以完成此操作。

要繞過此限制,您應該考慮使用Valid Constraint

檢查使用Valid Constraintthis well explained example,並且在父對象上處理驗證也會檢查子對象驗證規則。

Valid Constraint還提供了a traverse option,您可以使用它來檢查指向對象數組的屬性。

+0

它使用有效約束效果很好,謝謝! –

+3

這裏只是一個快速記錄。您無法將驗證組傳遞給有效約束 - 它只有默認約束。你很少需要這樣做,但請記住。這是我在使用有效約束時遇到的限制。 – tomazahlin