php - getrepository - getdoctrine()
Cómo obtener los parámetros de solicitud en symfony2 (13)
Como ahora el método $this->getRequest()
está en desuso, debes inyectar el objeto Request
en tu acción de controlador de esta manera:
public function someAction(Request $request)
después de eso puedes usar uno de los siguientes.
Si desea obtener datos POST de la solicitud, use los siguientes:
$request->request->get(''var_name'');
pero si quiere obtener datos GET de la solicitud, use esto:
$request->query->get(''var_name'');
Soy muy nuevo en Symfony. En otros lenguajes 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 funciona para mí. Supongamos que tengo un campo de formulario con el nombre de usuario . En la acción de forma, traté de 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 funciona. Sin embargo, los siguientes funcionaron bien:
foreach($request->request->all() as $req){
print_r($req[''username'']);
}
¿Dónde estoy haciendo mal al usar el método getParameter()
? Cualquier ayuda será apreciada.
Dentro de un controlador:
$request = $this->getRequest();
$username = $request->get(''username'');
La denominación no es tan intuitiva:
use Symfony/Component/HttpFoundation/Request;
public function updateAction(Request $request)
{
// $_GET parameters
$request->query->get(''name'');
// $_POST parameters
$request->request->get(''name'');
La mayoría de los casos están cubiertos por las respuestas anteriores.
En caso de que se envíen datos de fila (por ejemplo, procesamiento de una cadena JSON enviada a la aplicación por un servicio remoto utilizando el método HTTP POST), se puede usar getContent ():
$content = $request->getContent();
Se puede encontrar información útil adicional sobre solicitudes http en Symfony en: https://symfony.com/doc/2.8/components/http_foundation.html
Lo hago aún más simple:
use Symfony/Component/HttpFoundation/Request;
public function updateAction(Request $request)
{
$foo = $request->get(''foo'');
$bar = $request->get(''bar'');
}
Otra opción es introducir sus parámetros en la definición de su función de acción:
use Symfony/Component/HttpFoundation/Request;
public function updateAction(Request $request, $foo, $bar)
{
echo $foo;
echo $bar;
}
que, luego, asume que definió {foo} y {bar} como parte de su patrón de URL en su archivo routing.yml:
acme_myurl:
pattern: /acme/news/{foo}/{bar}
defaults: { _controller: AcmeBundle:Default:getnews }
Prueba esto, funciona
$this->request = $this->container->get(''request_stack'')->getCurrentRequest();
Saludos
Puede usar el siguiente código para obtener sus valores de campo de formulario
use Symfony/Component/HttpFoundation/Request;
public function updateAction(Request $request)
{
// retrieve GET and POST variables respectively
$request->query->get(''foo'');
$request->request->get(''bar'', ''default value if bar does not exist'');
}
O también puede obtener todos los valores de formulario como matriz mediante el uso de
$request->request->all()
Puedes hacerlo así:
$clientName = $request->request->get(''appbundle_client'')[''clientName''];
A veces, cuando los atributos están protegidos, no puede tener acceso para obtener el valor del método común de acceso:
(ENVIAR)
$clientName = $request->request->get(''clientName'');
(OBTENER)
$clientName = $request->query->get(''clientName'');
(GENÉRICO)
$clientName = $request->get(''clientName'');
Si necesita obtener el valor de una selección, puede usar:
$form->get(''nameSelect'')->getClientData();
Sus opciones:
- Sencillo:
-
$request->request->get(''param'')
($_POST[''param'']
) o -
$request->query->get(''param'')
($_GET[''param'']
)
-
- Buenas formas de Symfony con todas las validaciones, transormación de valores y representación de formas con errores y muchas otras características:
- Algo intermedio (ver ejemplo a continuación)
<?php
/**
* @Route("/customers", name="customers")
*
* @param Request $request
* @return Response
*/
public function index(Request $request)
{
$optionsResolver = new OptionsResolver();
$optionsResolver->setDefaults([
''email'' => '''',
''phone'' => '''',
]);
$filter = $optionsResolver->resolve($request->query->all());
/** @var CustomerRepository $customerRepository */
$customerRepository = $this->getDoctrine()->getRepository(''AppBundle:Customer'');
/** @var Customer[] $customers */
$customers = $customerRepository->findFilteredCustomers($filter);
return $this->render('':customers:index.html.twig'', [
''customers'' => $customers,
''filter'' => $filter,
]);
}
Más sobre OptionsResolver
- http://symfony.com/doc/current/components/options_resolver.html
tratar
$request->request->get(''acme_demobundle_usertype'')[''username'']
inspeccionar el nombre del atributo de su campo de formulario
$request = Request::createFromGlobals();
$getParameter = $request->get(''getParameter'');
public function indexAction(Request $request)
{
$data = $request->get(''corresponding_arg'');
// this also works
$data1 = $request->query->get(''corresponding_arg1'');
}