@ জয় শেঠের উত্তরের ভিত্তিতে, আমি বিশেষত আজাক্স ফর্মগুলির জন্য ফর্মএরিগ্রাস ক্লাসের একটি সংস্করণ তৈরি করেছি:
// 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);
সিমফনি সংস্করণ: ২.৮.৪
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
।