0
我有以下問題。我使用Symfony Forms來驗證JSON請求,這也很棒。但我也會以更多的Json可讀的方式拋出錯誤。Symfony窗體錯誤呈現
是否有可能從FormErrorIterator FormError獲取每個錯誤的相關字段名稱。
例如:
formName.SubForm.Propertyname => 'MyErrorMessage'
路徑的結構可以是也數組。
我有以下問題。我使用Symfony Forms來驗證JSON請求,這也很棒。但我也會以更多的Json可讀的方式拋出錯誤。Symfony窗體錯誤呈現
是否有可能從FormErrorIterator FormError獲取每個錯誤的相關字段名稱。
例如:
formName.SubForm.Propertyname => 'MyErrorMessage'
路徑的結構可以是也數組。
如果你想獲取一個數組的形式的錯誤,你可以添加在你的控制器使用方法:
private function getErrorMessages(\Symfony\Component\Form\Form $form) {
$errors = array();
foreach ($form->getErrors() as $key => $error) {
if ($form->isRoot()) {
$errors['#'][] = $error->getMessage();
} else {
$errors[] = $error->getMessage();
}
}
foreach ($form->all() as $child) {
if (!$child->isValid()) {
$errors[$child->getName()] = $this->getErrorMessages($child);
}
}
return $errors;
}
$錯誤將包含錯誤的數組,如果一個字段有錯誤字段名稱將用作數組中的鍵:
$ errors ['FIELD_NAME'] = ERROR_MSG。
根據您的Symfony版本,您可能需要或想要此方法的其他版本:Symfony2 : How to get form validation errors after binding the request to the form。
UPDATE
如果您validation constraints是對實體類的字段,他們將是錯誤的陣列基於字段名的鍵英寸
如果您的驗證約束條件在實體類上,則它將在#鍵或數字鍵中,具體取決於表單是否爲根。
實體類的例子
/**
* @Assert\Callback("isValidName") <- this error will be in $errors['#']
*/
class Author
{
/**
* @Assert\NotBlank() <- this error will be in $errors['firstname']
*/
public $firstname;
}
如果您想對字段僅錯誤,你需要將所有的實體領域的實體類斷言。
這似乎更多的評論。您需要向提問者詢問是否要從參考鏈接中提取更具體(且有用)的答案,以便在此處進行報告。 – 2015-03-13 18:30:12
我已經更新了關於您的評論的答案,它應該更準確。 – HypeR 2015-03-13 19:29:45
幹得好,現在它是一個答案:-)。 – 2015-03-13 19:43:49