Buscar..


Introducción

La clase Request de Symfony es una representación orientada a objetos de la solicitud HTTP. Contiene información como la URL, la cadena de consulta, los archivos cargados, las cookies y otros encabezados que provienen del navegador.

Sintaxis

  • $ solicitud-> getPathInfo (); // devuelve la ruta (parte local de la URL) que se solicita (pero sin la cadena de consulta). Es decir, cuando visite https://example.com/foo/bar?key=value , esto contendrá / foo / bar
  • $ solicitud-> consulta-> obtener ('id'); // devuelve un parámetro de cadena de consulta ($ _GET)
  • $ solicitud-> consulta-> obtener ('id', 1); // devuelve un parámetro de cadena de consulta con un valor predeterminado
  • $ solicitud-> solicitud-> obtener ('nombre'); // devuelve una variable de cuerpo de solicitud ($ _POST)
  • $ solicitud-> archivos-> obtener ('archivo adjunto'); // devuelve una instancia de UploadedFile identificada por "archivo adjunto"
  • $ request-> cookies-> get ('PHPSESSID'); // devuelve el valor de una cookie ($ _COOKIE)
  • $ request-> headers-> get ('content_type'); // devuelve un encabezado de solicitud HTTP
  • $ solicitud-> getMethod (); // devuelve el método de solicitud HTTP (GET, POST, PUT, DELETE, etc.)
  • $ request-> getLanguages ​​(); // devuelve una matriz de idiomas que el cliente acepta

Obtener un parámetro de cadena de consulta

Digamos que queremos construir una lista de productos paginada, donde el número de la página se pasa como un parámetro de cadena de consulta. Por ejemplo, para obtener la tercera página, iría a:

http://example.com/products?page=3

La solicitud HTTP sin formato se vería así:

GET /products?page=3 HTTP/1.1
Host: example.com
Accept: text/html
User-Agent: Mozilla/5.0 (Macintosh)

Para obtener el número de página del objeto de solicitud, puede acceder a la propiedad de query :

$page = $request->query->get('page'); // 3

En el caso de un parámetro de page , es probable que desee pasar un valor predeterminado en caso de que el parámetro de cadena de consulta no esté establecido:

$page = $request->query->get('page', 1);

Esto significa que cuando alguien visita http://example.com/products (tenga en cuenta la ausencia de la cadena de consulta), la variable $page contendrá el valor predeterminado 1 .

Creando un objeto de solicitud a partir de variables globales

PHP expone una serie de variables globales que contienen información sobre la solicitud HTTP, como $_POST , $_GET , $_FILES , $_SESSION , etc. La clase Request contiene un createFromGlobals() estático createFromGlobals() para instanciar una solicitud Objeto basado en estas variables:

use Symfony\Component\HttpFoundation\Request;

$request = Request::createFromGlobals();

Cuando uses el framework Symfony, no deberías crear una instancia del objeto de solicitud. En su lugar, debe usar el objeto del que se app.php instancia cuando el marco se reinicia en app.php / app_dev.php . Por ejemplo, por tipo insinuando el objeto de solicitud en su controlador .

Accediendo a una variable POST

Para obtener el contenido de un formulario que se envía con method="post" , use la propiedad post :

$name = $request->request->get('name');

Accediendo a los contenidos de una cookie.

$id = $request->cookies->get('PHPSESSID');

Esto devolverá el valor de la cookie 'PHPSESSID' enviada por el navegador.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow