2010-09-30 15 views
8

w Zend Framework, przez większość czasu uzyskania param, użyjęZend Framework: Czy mogę uzyskać parametry GET?

// from controller 
$this->getRequest()->getParam('key'); 

ale jak mogę uzyskać tylko za pomocą GET params drogę 'Zend'? Czy mogę po prostu użyć $_GET? Czy jest jakaś różnica między

$this->getRequest()->getParam('key'); 

vs

$_GET['key']; 
+0

Najczęściej wystarczy użyć '$ _GET', '$ this-> getRequest() -> getParams()' I częściej używać, aby dostać się z zmiennych route – Hannes

+1

W swojej klasie kontrolera możesz użyć '$ this -> _ getParam ('key')' zamiast '$ this-> getRequest() -> getParam ('key')' - jest trochę krótszy. –

Odpowiedz

32

Zastosowanie getQuery():

$this->_request->getQuery('key'); 

Inne dostępne sposoby obejmują

  • getParam()
  • getQuery()
  • getPost()
  • GetCookie()
  • getServer ()
  • getenv()

getParam() sprawdza użytkownik params, potem $ _GET, $ _POST i potem, wracając pierwszy mecz znaleziony lub zerowa.

Staraj się unikać bezpośredniego dostępu do superglobałów.

12

Główną różnicą jest to, że

$_GET['key']; 

jest zależność od środowiska. Wymaga, aby superglobał był dostępny i zawierał klucz o tej nazwie. Jest to po prostu prosty dostęp do tablicy, podczas gdy to wywołanie metody API. Dostęp do wniosku jest pobierany. Nie ma zależności od rzeczywistego środowiska. Obiekt żądania może być próbą. Metoda getParam zawsze zwróci wartość niezależnie od tego, czy pochodzi ona od $_GET czy od $_POST.

Umieszczenie abstrakcji na górze żądania jest lepsze, ponieważ pozwala na większą separację, mniej zależności, a tym samym ułatwia testowanie i obsługę aplikacji.

0

Działa to dla ZF2

$this->params()->fromQuery('key', 1); // second argument is optional default paramter