2011-09-09 27 views
6

Via jQuery, Ajax I/POST este JSONcómo convertir un json a un objeto php en symfony2?

{"indices":[1,2,6]}: 

a una acción de Symfony2. En este momento, realmente solo me importa la matriz, así que si esto hace las cosas mucho más fáciles, también podría publicar [1,2,6].

¿Cómo puedo convertir esto en un objeto php?


De alguna manera, esto no funciona:

/** 
* @Route("/admin/page/applySortIndex", name="page_applysortindex") 
* @Method("post") 
* @Template() 
*/ 
public function applySortIndexAction() 
{ 
    $request = $this->getRequest(); 
    $j = json_decode($request->request->get('json')); 
    $indices = $j->indices; 
    return array('data'=> $indices); 
} 

da un Aviso

: Tratar de obtener la propiedad de no-objeto en .../línea PageController.php 64 (500 Error interno del servidor)

que sería donde tengo acceso a $ j-> índices, donde $ j parece ser nulo


El cartel:

$.ajax({ 
     type: 'POST', 
     url: "{{ path('page_applysortindex')}}", 
     data: $.toJSON({indices: newOrder}), 
     success: ... 
+0

supongo que no ha utilizado "json" como nombre para este parámetro POST- – Raffael

+0

No estoy usando activamente ningún nombre, voy a publicar el js encima ... Ah – Jan

+0

, entonces tengo que escribir datos: "data =" + $ .toJSON ({indices: newOrder}) y todo está bien. Probablemente haya una mejor solución para esto. – Jan

Respuesta

5

para obtener los datos enviados a través del uso del cuerpo:

$request = $this->getRequest(); 
$request->getContent(); 

inspeccionar la salida y luego actuar. pero esto contendrá el json.

(sí, probaron que esto conduce a su JSON.)


conseguir un POST-parámetro con nombre JSON desde el interior de un controlador:

$request = $this->getRequest(); 
$request->request->get('json'); 

Request-object


$j = json_decode('{"indices":[1,2,6]}'); 

var_dump($j); 

lea ds a:

object(stdClass)#1 (1) { 
    ["indices"]=> 
    array(3) { 
    [0]=> 
    int(1) 
    [1]=> 
    int(2) 
    [2]=> 
    int(6) 
    } 
} 
+0

¡Muchas gracias! Las cosas pueden ser tan fáciles si puedes preguntarle al tipo correcto :) – Jan

+1

Arrgh, pero ¿cómo llego al json de la solicitud? – Jan

+0

Parece que no puedo llegar al json, todavía. Actualicé mi pregunta para mostrar el método real en cuestión ... – Jan