2010-09-30 6 views
8

В Zend Framework, большую часть времени, чтобы получить из параметров, я буду использоватьZend Framework: Могу ли я просто получить параметры GET?

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

но как я могу получить только GET PARAMS используя путь «Zend»? Или я просто использую $_GET? Есть ли разница между

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

против

$_GET['key']; 
+0

я в основном просто использовать '$ _GET,' $ this-> GetRequest() -> getParams() 'Я все чаще используют для получения переменных из ряда route – Hannes

+1

В вашем классе контроллера вы можете использовать '$ this -> _ getParam ('key')' вместо '$ this-> getRequest() -> getParam ('key')' - он немного короче. –

ответ

32

Применение getQuery():

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

Другие доступные методы включают в себя

  • GetParam()
  • GetQuery()
  • getPost()
  • getCookie()
  • getServer ()
  • GetEnv()

getParam() пользователя проверяет Params первый, а затем $ _GET, а затем $ _POST, возвращая первый матч найден или нуль.

Старайтесь избегать прямого доступа к суперглобалам.

12

Основное отличие заключается в том, что

$_GET['key']; 

является зависимость от окружающей среды. Это требует, чтобы суперглобал был доступен и содержал ключ от этого имени. Это также простой доступ к массиву, в то время как

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

- вызов метода API. Доступ к запросу абстрагируется. От реальной среды не зависит. Объект Request может быть макетным. Метод getParam всегда будет возвращать значение независимо от того, находится ли он от $_GET или $_POST.

Помещение абстракции поверх запроса лучше, поскольку оно позволяет больше развязывать, меньше зависимостей и поэтому упрощает тестирование и обслуживание вашего приложения.

0

Изучив Zend 2's in depth data binding documentation, я обнаружил, что лучше всего получить доступ к параметрам с маршрута через автоматически доступный Params plugin. Используя этот плагин, вы можете получить параметр, как показано ниже, внутри контроллера.

$this->params('key'); 
0

Это работает для ZF2

$this->params()->fromQuery('key', 1); // second argument is optional default paramter 
Смежные вопросы