Rückgabe von json-kodierte form-Fehler in symfony

Ich möchte einen webservice, auf die ich ein Formular Absenden, und im Falle von Fehlern, wird ein jason-codierte Liste, die mir sagt, welches Feld falsch ist.

derzeit bekomme ich nur eine Liste von Fehlermeldungen, aber nicht eine html id oder einen Namen der Felder mit Fehler

hier ist meine aktuelle code

public function saveAction(Request $request)
{
    $em = $this->getDoctrine()->getManager();

    $form = $this->createForm(new TaskType(), new Task());

    $form->handleRequest($request);

    $task = $form->getData();

    if ($form->isValid()) {

        $em->persist($task);
        $em->flush();

        $array = array( 'status' => 201, 'msg' => 'Task Created'); 

    } else {

        $errors = $form->getErrors(true, true);

        $errorCollection = array();
        foreach($errors as $error){
               $errorCollection[] = $error->getMessage();
        }

        $array = array( 'status' => 400, 'errorMsg' => 'Bad Request', 'errorReport' => $errorCollection); //data to return via JSON
    }

    $response = new Response( json_encode( $array ) );
    $response->headers->set( 'Content-Type', 'application/json' );

    return $response;
}

diese geben mir eine Antwort wie

{
"status":400,
"errorMsg":"Bad Request",
"errorReport":{
        "Task cannot be blank",
        "Task date needs to be within the month"
    }
}

aber was ich wirklich will, ist so etwas wie

{
"status":400,
"errorMsg":"Bad Request",
"errorReport":{
        "taskfield" : "Task cannot be blank",
        "taskdatefield" : "Task date needs to be within the month"
    }
}

Wie kann ich das erreichen?

InformationsquelleAutor SimonQuest | 2014-07-03
Schreibe einen Kommentar