long story short: Utilizzo di FOSRestBundle Sto tentando di creare alcune entità tramite chiamata POST o modificare esistente tramite PUT.FosRestBundle post/put [crea nuovo/aggiornamento entità] non letto Richiesta corretta
qui il codice:
/**
* Put action
* @var Request $request
* @var integer $id Id of the entity
* @return View|array
*/
public function putCountriesAction(Request $request, $id)
{
$entity = $this->getEntity($id);
$form = $this->createForm(new CountriesType(), $entity, array('method' => 'PUT'));
$form->bind($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
return $this->view(null, Codes::HTTP_NO_CONTENT);
}
return array(
'form' => $form,
);
} //[PUT] /countries/{id}
Se chiamo/paesi/{id} con PUT passare un JSON come { "description": "Il Giappone"}, ne modifica il mio paese con id = 1, mettendo una descrizione vuota.
Se, invece, cerco di creare una nuova entità con questo metodo:
/**
* Create new Countries (in batch)
* @param Request $request json request
* @return array redirect to get_coutry, will show the newly created entities
*/
public function postCountriesAction(Request $request)
{
$entity = new Countries();
$form = $this->createForm(new CountriesType(), $entity);
$form->bind($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
return $this->redirectView(
$this->generateUrl(
'get_country',
array('id' => $entity->getId())
),
Codes::HTTP_CREATED
);
}
return array(
'form' => $form,
);
} //[PUT {"description":"a_description"}] /countries
mi dà un errore che dice:
exception occurred while executing 'INSERT INTO countries (description) VALUES (?)' with params [null]:
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'description' cannot be null
così sembra che io non sono in grado di passare correttamente la richiesta di associare al modulo.
Si noti che se ho json_decode la richiesta come suggerito here si risponde con un
{
"code":400,
"message":"Validation Failed",
"errors":{
"errors":[
"This value is not valid."
],
"children":{
"description":[
]
}
}
}
qualche consiglio?
Grazie, Rolls
purtroppo questo non fa il trucco ... Sembra i' Non sono in grado di associare la richiesta al modulo ... cosa ho [dal debug]: 'richiesta: PUT' ' richiesta: Array ([descrizione] => Giappone) ' ' entità da db: Paesi Oggetto ([id: protected] => 1; [descrizione: protected] => Italia) ' ' da form-> getData() form: Paesi Oggetto <- ([id: protected] => 1; [description: protected] =>) cosa salva: entity: Countries Object ([id: protected] => 1; [description: protected] =>) ' – rollsappletree