@ जय सेठ के जवाब के आधार पर, मैंने विशेष रूप से अजाक्स फॉर्म के लिए फॉर्मरर्स क्लास का एक संस्करण बनाया:
// src/AppBundle/Form/FormErrors.php
namespace AppBundle\Form;
class FormErrors
{
/**
* @param \Symfony\Component\Form\Form $form
*
* @return array $errors
*/
public function getArray(\Symfony\Component\Form\Form $form)
{
return $this->getErrors($form, $form->getName());
}
/**
* @param \Symfony\Component\Form\Form $baseForm
* @param \Symfony\Component\Form\Form $baseFormName
*
* @return array $errors
*/
private function getErrors($baseForm, $baseFormName) {
$errors = array();
if ($baseForm instanceof \Symfony\Component\Form\Form) {
foreach($baseForm->getErrors() as $error) {
$errors[] = array(
"mess" => $error->getMessage(),
"key" => $baseFormName
);
}
foreach ($baseForm->all() as $key => $child) {
if(($child instanceof \Symfony\Component\Form\Form)) {
$cErrors = $this->getErrors($child, $baseFormName . "_" . $child->getName());
$errors = array_merge($errors, $cErrors);
}
}
}
return $errors;
}
}
उपयोग (उदाहरण के लिए)
$errors = $this->get('form_errors')->getArray($form);
सिम्फनी संस्करण: 2.8.4
उदाहरण JSON प्रतिक्रिया:
{
"success": false,
"errors": [{
"mess": "error_message",
"key": "RegistrationForm_user_firstname"
}, {
"mess": "error_message",
"key": "RegistrationForm_user_lastname"
}, {
"mess": "error_message",
"key": "RegistrationForm_user_email"
}, {
"mess": "error_message",
"key": "RegistrationForm_user_zipCode"
}, {
"mess": "error_message",
"key": "RegistrationForm_user_password_password"
}, {
"mess": "error_message",
"key": "RegistrationForm_terms"
}, {
"mess": "error_message2",
"key": "RegistrationForm_terms"
}, {
"mess": "error_message",
"key": "RegistrationForm_marketing"
}, {
"mess": "error_message2",
"key": "RegistrationForm_marketing"
}]
}
त्रुटि ऑब्जेक्ट में "कुंजी" फ़ील्ड शामिल है, जो इनपुट DOM तत्व की आईडी है, जिससे आप आसानी से त्रुटि संदेशों को आबाद कर सकते हैं।
यदि आपके पास माता-पिता के अंदर बच्चे के रूप हैं, तो cascade_validation
माता-पिता के फॉर्म के अंदर विकल्प जोड़ना न भूलें setDefaults
।