Szukaj…
Wprowadzenie
Klasa Request Symfony jest zorientowaną obiektowo reprezentacją żądania HTTP. Zawiera informacje, takie jak adres URL, ciąg zapytania, przesłane pliki, pliki cookie i inne nagłówki pochodzące z przeglądarki.
Składnia
- $ request-> getPathInfo (); // zwraca żądaną ścieżkę (lokalną część adresu URL) (ale bez ciągu zapytania). Tj. Podczas odwiedzania https://example.com/foo/bar?key=value , będzie to zawierać / foo / bar
- $ request-> query-> get ('id'); // zwraca parametr ciągu zapytania ($ _GET)
- $ request-> query-> get ('id', 1); // zwraca parametr ciągu zapytania o wartości domyślnej
- $ request-> request-> get ('name'); // zwraca zmienną treści żądania ($ _POST)
- $ request-> pliki-> get ('załącznik'); // zwraca instancję pliku UploadedFile identyfikowanego przez „załącznik”
- $ request-> cookies-> get ('PHPSESSID'); // zwraca wartość pliku cookie ($ _COOKIE)
- $ request-> headers-> get ('content_type'); // zwraca nagłówek żądania HTTP
- $ request-> getMethod (); // zwraca metodę żądania HTTP (GET, POST, PUT, DELETE itp.)
- $ request-> getLanguages (); // zwraca tablicę języków akceptowanych przez klienta
Uzyskiwanie parametru ciągu zapytania
Powiedzmy, że chcemy zbudować paginowaną listę produktów, w której numer strony jest przekazywany jako parametr ciągu zapytania. Na przykład, aby pobrać trzecią stronę, przejdź do:
http://example.com/products?page=3
Surowe żądanie HTTP wyglądałoby mniej więcej tak:
GET /products?page=3 HTTP/1.1
Host: example.com
Accept: text/html
User-Agent: Mozilla/5.0 (Macintosh)
Aby uzyskać numer strony z obiektu żądania, możesz uzyskać dostęp do właściwości query
:
$page = $request->query->get('page'); // 3
W przypadku parametru page
prawdopodobnie będziesz chciał przekazać wartość domyślną, jeśli parametr ciągu zapytania nie jest ustawiony:
$page = $request->query->get('page', 1);
Oznacza to, że gdy ktoś wejdzie na http://example.com/products (zwróć uwagę na brak ciągu zapytania), zmienna $page
będzie zawierać wartość domyślną 1
.
Tworzenie obiektu żądania ze zmiennych globalnych
PHP udostępnia szereg tak zwanych zmiennych globalnych, które zawierają informacje o żądaniu HTTP, takie jak $_POST
, $_GET
, $_FILES
, $_SESSION
itp. Klasa Request
zawiera statyczną createFromGlobals()
w celu utworzenia wystąpienia obiekt oparty na tych zmiennych:
use Symfony\Component\HttpFoundation\Request;
$request = Request::createFromGlobals();
Korzystając ze środowiska Symfony, nie powinieneś sam tworzyć instancji obiektu żądania. Zamiast tego powinieneś użyć obiektu, który jest tworzony podczas app.php
frameworku w app.php
/ app_dev.php
. Na przykład wpisując podpowiedź do obiektu żądania w kontrolerze .
Dostęp do zmiennej POST
Aby uzyskać zawartość formularza przesłanego za pomocą method="post"
, użyj właściwości post
:
$name = $request->request->get('name');
Dostęp do zawartości pliku cookie
$id = $request->cookies->get('PHPSESSID');
Zwróci to wartość pliku cookie „PHPSESSID” przesłanego przez przeglądarkę.