Как я могу получить различные параметры, связанные с запросом страницы в zf2? Как и параметры post / get, доступ к маршруту, отправленные заголовки и загруженные файлы.
источник
Как я могу получить различные параметры, связанные с запросом страницы в zf2? Как и параметры 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
Все эти методы также поддерживают значения по умолчанию, которые будут возвращены, если параметр с данным именем не найден.
$orderBy = $this->params()->fromQuery('orderby', 'name');
При посещении http://example.com/?orderby=birthdate ,
$ OrderBy будет иметь значение дата рождения .
При посещении http://example.com/ ,
$ OrderBy будет иметь по умолчанию значение имени .
Чтобы получить все параметры одного типа, просто ничего не передавайте, и плагин Params вернет массив значений с их именами в качестве ключей.
$allGetValues = $this->params()->fromQuery(); // empty method call
При посещении http://example.com/?orderby=birthdate&filter=hasphone $ allGetValues будет массивом типа
array(
'orderby' => 'birthdate',
'filter' => 'hasphone',
);
Если вы проверите исходный код для плагина Params, вы увидите, что это просто тонкая оболочка для других контроллеров, позволяющая более согласованно получать параметры. Если вы по какой-то причине хотите / хотите получить к ним доступ напрямую, вы можете увидеть в исходном коде, как это делается.
$this->getRequest()->getRequest('name', 'default');
$this->getEvent()->getRouteMatch()->getParam('name', 'default');
ПРИМЕЧАНИЕ. Вы могли бы использовать суперглобальные переменные $ _GET, $ _POST и т. Д., Но это не рекомендуется.
$this->params('key', 'default')
Например, самый простой способ получить опубликованную строку json - это прочитать содержимое php: // input и затем его декодировать. Например, у меня был простой маршрут Zend:
и я хотел публиковать данные с помощью Angular $ http.post. Сообщение было в порядке, но метод извлечения в Zend
ничего не получил в этом случае. Итак, мое решение заключалось в том, что после попытки всех видов методов, таких как $ _POST и других методов, указанных выше, читать из php: //:
В итоге я получил свой массив json. Надеюсь это поможет.
источник
$content = $this->getRequest()->getContent()
?name=mike
?источник
Все вышеперечисленные методы будут работать нормально, если ваш тип контента - «application / -www-form-urlencoded». Но если ваш тип содержимого - «application / json», вам нужно будет сделать следующее:
$ params = json_decode (file_get_contents ('php: // input'), true); print_r ($ params);
Причина: см. № 7 в https://www.toptal.com/php/10-most-common-mistakes-php-programmers-make
источник
Если у вас нет доступа к плагину, например, вне контроллера, вы можете получить параметры из servicelocator следующим образом
источник