Soy muy nuevo en Symfony. En otros idiomas, como Java y otros, puedo usar request.getParameter('parmeter name')
para obtener el valor.
¿Hay algo similar que podamos hacer con Symfony2?
He visto algunos ejemplos, pero ninguno me funciona. Supongamos que tengo un campo de formulario con el nombre de usuario . En la acción de formulario intenté usar algo como esto:
$request = $this->getRequest();
$username= $request->request->get('username');
También he intentado
$username = $request->getParameter('username');
y
$username=$request->request->getParameter('username');
Pero ninguna de las opciones está funcionando. Sin embargo, lo siguiente funcionó bien:
foreach($request->request->all() as $req){
print_r($req['username']);
}
¿Dónde estoy haciendo mal al usar el getParameter()
método? Cualquier ayuda será apreciada.
$request->request-get()
debería ser$request->request->get()
. ¿Podría ser eso?get()
es el método correcto y (b) ha activado los avisos de PHP para que pueda ver si hay algún problema? (c) ¿Symfony 2 tiene una barra de herramientas de depuración como Symfony 1, para que pueda ver si ha cometido algún error?Respuestas:
El nombramiento no es tan intuitivo:
fuente
$_GET
los datos son datos de la cadena de consulta (no seGET
necesita ninguna solicitud) y los$_POST
datos son datos del cuerpo de la solicitud (tampoco tiene que ser unaPOST
solicitud, podría serPUT
).$request->get
y$request->post
sería más simple.Lo hago aún más simple:
Otra opción es introducir sus parámetros en la definición de su función de acción:
que luego asume que definiste {foo} y {bar} como parte de tu patrón de URL en tu archivo routing.yml:
fuente
foo
parámetro tanto en la cadena de consulta como en el cuerpo POST, ¿cuál será devuelto por$request->get('foo')
?$request->get('foo');
para TODAS las bolsas (el pedido es: RUTA, OBTENER, PUBLICAR). Sin embargo,$request->request->get('foo');
funciona solo para la bolsa POST. Finalmente, el primero ($request->get()
) no se recomienda si sabemos dónde están los datos (GET / POST).Puede usar el siguiente código para obtener sus valores de campo de formulario
O también puede obtener todos los valores de formulario como matriz utilizando
fuente
tratar
inspeccionar el nombre del atributo de su campo de formulario
fuente
Dentro de un controlador:
fuente
$this->getRequest()
está en desuso, a favor de inyectar la Solicitud en la acción del controlador, por ejemplo:public function showAction(Request $request, $id);
Sus opciones:
$request->request->get('param')
($_POST['param']
) o$request->query->get('param')
($_GET['param']
)Más sobre
OptionsResolver
- http://symfony.com/doc/current/components/options_resolver.htmlfuente
Como ahora el
$this->getRequest()
método está en desuso, debe inyectar unRequest
objeto en la acción del controlador de esta manera:después de eso puedes usar uno de los siguientes.
Si desea obtener datos POST de la solicitud, use lo siguiente:
pero si desea obtener datos GET de la solicitud, use esto:
fuente
Puedes hacerlo así:
A veces, cuando los atributos están protegidos, no puede tener acceso para obtener el valor del método común de acceso:
(ENVIAR)
(OBTENER)
(GENÉRICO)
fuente
$clientName = $request->query->get('clientName','any');
La mayoría de los casos, como obtener cadenas de consulta o parámetros de formulario, se tratan en las respuestas anteriores.
Cuando se trabaja con datos sin procesar, como una cadena JSON sin procesar en el cuerpo que le gustaría dar como argumento
json_decode()
,Request::getContent()
se puede usar el método .Se puede encontrar información útil adicional sobre las solicitudes HTTP en Symfony en la documentación del paquete HttpFoundation .
fuente
fuente
Request
parámetro? (por ejemplo, en funciones privadas de la clase de controlador)Gracias, también puedes usar el código anterior
fuente
Si necesita obtener el valor de una selección, puede usar:
fuente
Intenta esto, funciona
Saludos
fuente
fuente
Para usuarios de Symfony 4:
fuente
# www.example / register / admin
fuente