php file-upload zend-route zend-framework2

php - Cómo acceder a los parámetros de ruta, publicación, obtención, etc. en Zend Framework 2



file-upload zend-route (3)

¿Cómo puedo obtener varios parámetros relacionados con la solicitud de página en zf2? Al igual que los parámetros de publicación / obtención, la ruta a la que se accede, los encabezados enviados y los archivos cargados.


La forma más fácil de hacerlo sería usar el plugin Params, presentado en beta5. Tiene métodos de utilidad para facilitar el acceso a diferentes tipos de parámetros. Como siempre, leer las pruebas puede ser valioso para entender cómo se supone que se debe usar algo.

Obtenga un valor único

Para obtener el valor de un parámetro con nombre en un controlador, deberá seleccionar el método apropiado para el tipo de parámetro que está buscando y pasar el nombre.

Ejemplos:

$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

Valores predeterminados

Todos estos métodos también admiten valores predeterminados que se devolverán si no se encuentra ningún parámetro con el nombre de pila.

Ejemplo:

$orderBy = $this->params()->fromQuery(''orderby'', ''name'');

Al visitar http://example.com/?orderby=birthdate , $ orderBy tendrá el valor de fecha de nacimiento .
Al visitar http://example.com/ , $ orderBy tendrá el nombre de valor predeterminado .

Obtener todos los parámetros

Para obtener todos los parámetros de un tipo, simplemente no pase nada y el complemento Params devolverá una matriz de valores con sus nombres como claves.

Ejemplo:

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

Al visitar http://example.com/?orderby=birthdate&filter=hasphone $ allGetValues habrá una matriz como

array( ''orderby'' => ''birthdate'', ''filter'' => ''hasphone'', );

No usa el plugin Params

Si comprueba el código fuente del complemento Params, verá que se trata de una capa delgada alrededor de otros controladores para permitir una recuperación de parámetros más consistente. Si por alguna razón quiere / necesita acceder a ellos directamente, puede ver en el código fuente cómo se hace.

Ejemplo:

$this->getRequest()->getRequest(''name'', ''default''); $this->getEvent()->getRouteMatch()->getParam(''name'', ''default'');

NOTA: Podría haber usado los superglobales $ _GET, $ _POST, etc., pero eso no se recomienda.


La forma más fácil de obtener una cadena json publicada, por ejemplo, es leer el contenido de ''php: // input'' y luego decodificarlo. Por ejemplo, tenía una ruta simple de Zend:

''save-json'' => array( ''type'' => ''Zend/Mvc/Router/Http/Segment'', ''options'' => array( ''route'' => ''/save-json/'', ''defaults'' => array( ''controller'' => ''CDB/Controller/Index'', ''action'' => ''save-json'', ), ), ),

y quería publicar datos utilizando Angular''s http.post. La publicación estuvo bien pero el método de recuperación en Zend

$this->params()->fromPost(''paramname'');

no obtuve nada en este caso. Entonces mi solución fue, después de probar todo tipo de métodos como $ _POST y los otros métodos indicados anteriormente, leer de ''php: //'':

$content = file_get_contents(''php://input''); print_r(json_decode($content));

Conseguí mi matriz json al final. Espero que esto ayude.


require_once ''lib/Zend/Loader/StandardAutoloader.php''; $loader = new Zend/Loader/StandardAutoloader(array(''autoregister_zf'' => true)); $loader->registerNamespace(''Http/PhpEnvironment'', ''lib/Zend/Http''); // Register with spl_autoload: $loader->register(); $a = new Zend/Http/PhpEnvironment/Request(); print_r($a->getQuery()->get()); exit;