Блог

PHP/Zend Framework 2: How to access route, post, get etc

Когда используешь Zend Framework 2 то использовать глобальные переменные по типу POST, GET это не актуально. Нужно использовать плагин Params, введенный в beta5. Он имеет вспомогательные методы, чтобы облегчить доступ к различным типам параметров.

Получите одно значение

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

Например:

$this->params()->fromPost(‘paramname’); // From POST
$this->params()->fromQuery(‘paramname’); // From GET
$this->params()->fromRoute(‘paramname’); // From RouteMatch
$this->params()->fromHeader(‘paramname’); // From header
$this->params()->fromFiles(‘paramname’); // From file being uploaded

Значения по умолчанию

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

Например:

$currentId = $this->params()->fromQuery(‘paramId’, null);

Когда заходите http://example.com/?paramId=15, $paramId будет присвоено значение 15.
Когда заходите http://example.com/, $paramId будет присвоено значение null.

Получить все параметры

Чтобы получить все параметры одного типа, просто не передать ничего, и плагин Params вернет массив значений с их именами в качестве ключей.

Например:

$allGet = $this->params()->fromQuery(); // empty method call

Когда заходим http://example.com/?orderby=birthdate&filter=hasphone $allGet будет массивом

array( ‘orderby’ => ‘birthdate’, ‘filter’ => ‘hasphone’, );

Не используя плагин Params

Если вы посмотрите исходный код плагина Params, вы увидите, что это всего лишь тонкая оболочка вокруг других контроллеров. Если вы по каким-то причинам хотите / должны обращаться к ним напрямую, вы можете увидеть в исходном коде, как это делается.Если вы посмотрите исходный код плагина Params, вы увидите, что это всего лишь тонкая оболочка вокруг других контроллеров. Если вы по каким-то причинам хотите / должны обращаться к ним напрямую, вы можете увидеть в исходном коде, как это делается.

Например:

$this->getRequest()->getRequest(‘key’, ‘default’);
$this->getEvent()->getRouteMatch()->getParam(‘key’, ‘default’);

Так же есть еще один способ актуален больше для POST:

$this->getRequest()->getPost(‘key’, ‘default’);

P. S. вы можете использовать суперглобальных $ _GET, $ _POST и т.д., но это не рекомендуется.