Como posso obter vários parâmetros relacionados à solicitação de página no zf2? Como parâmetros post / get, a rota sendo acessada, cabeçalhos enviados e arquivos carregados.
fonte
Como posso obter vários parâmetros relacionados à solicitação de página no zf2? Como parâmetros post / get, a rota sendo acessada, cabeçalhos enviados e arquivos carregados.
A maneira mais fácil de fazer isso seria usar o plugin Params , introduzido no beta5. Possui métodos utilitários para facilitar o acesso a diferentes tipos de parâmetros. Como sempre, ler os testes pode ser valioso para entender como algo deve ser usado.
Para obter o valor de um parâmetro nomeado em um controlador, você precisará selecionar o método apropriado para o tipo de parâmetro que está procurando e passar o nome.
$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
Todos esses métodos também suportam valores padrão que serão retornados se nenhum parâmetro com o nome fornecido for encontrado.
$orderBy = $this->params()->fromQuery('orderby', 'name');
Ao visitar http://example.com/?orderby=birthdate ,
$ orderBy terá o valor birthdate .
Ao visitar http://example.com/ ,
$ orderBy terá o nome do valor padrão .
Para obter todos os parâmetros de um tipo, apenas não passe nada e o plugin Params retornará um array de valores com seus nomes como chaves.
$allGetValues = $this->params()->fromQuery(); // empty method call
Ao visitar http://example.com/?orderby=birthdate&filter=hasphone $ allGetValues será uma matriz como
array(
'orderby' => 'birthdate',
'filter' => 'hasphone',
);
Se você verificar o código-fonte do plugin Params, verá que ele é apenas um wrapper fino em torno de outros controladores para permitir uma recuperação de parâmetro mais consistente. Se por algum motivo você deseja / precisa acessá-los diretamente, pode ver no código-fonte como isso é feito.
$this->getRequest()->getRequest('name', 'default');
$this->getEvent()->getRouteMatch()->getParam('name', 'default');
NOTA: Você poderia ter usado as superglobais $ _GET, $ _POST etc., mas isso não é recomendado.
$this->params('key', 'default')
A maneira mais fácil de obter uma string json postada, por exemplo, é ler o conteúdo de 'php: // input' e então decodificá-lo. Por exemplo, eu tinha uma rota Zend simples:
e eu queria postar dados nele usando $ http.post do Angular. A postagem foi boa, mas o método retrive no Zend
não recebi nada neste caso. Então minha solução foi, depois de tentar todos os tipos de métodos como $ _POST e os outros métodos declarados acima, ler 'php: //':
No final, obtive meu array json. Espero que isto ajude.
fonte
$content = $this->getRequest()->getContent()
?name=mike
?fonte
Todos os métodos acima funcionarão bem se o seu tipo de conteúdo for "application / -www-form-urlencoded". Mas se o seu tipo de conteúdo for "application / json", você terá que fazer o seguinte:
$ params = json_decode (file_get_contents ('php: // input'), true); print_r ($ params);
Motivo: consulte o nº 7 em https://www.toptal.com/php/10-most-common-mistakes-php-programmers-make
fonte
Se você não tiver acesso ao plugin por exemplo fora do controlador Vocêpoderá obter params do servicelocator assim
fonte