php - name - the_tags wordpress
¿Cómo obtengo todos los parámetros GET en Silex? (1)
En el objeto Request tiene acceso a múltiples bolsas de parámetros, en particular:
-
$request->query
- los parámetros GET -
$request->request
- los parámetros POST -
$request->attributes
- los atributos de solicitud (incluye parámetros analizados desde PATH_INFO)
$request->query
contiene solo parámetros GET. city_id
no es un parámetro GET. Es un atributo analizado desde PATH_INFO.
Silex usa varios componentes de Symfony . Las clases de solicitud y respuesta son parte de HttpFoundation. Obtenga más información al respecto en los documentos de Symfony:
He estado usando Silex por un día, y tengo la primera pregunta "estúpida". Si tengo:
$app->get(''/cities/{city_id}.json'', function(Request $request, $city_id) use($app) {
....
})
->bind(''city'')
->middleware($checkHash);
Quiero obtener todos los parámetros (city_id) incluidos en el middleware:
$checkHash = function (Request $request) use ($app) {
// not loading city_id, just the parameter after the ?
$params = $request->query->all();
....
}
Entonces, ¿cómo obtengo city_id (tanto el nombre del parámetro como su valor) dentro del middleware? Voy a tener 30 acciones, así que necesito algo utilizable y mantenible.
¿Qué me estoy perdiendo?
¡muchas gracias!
Solución
Necesitamos obtener esos parámetros adicionales de los atributos $ request->
$checkHash = function (Request $request) use ($app) {
// GET params
$params = $request->query->all();
// Params which are on the PATH_INFO
foreach ( $request->attributes as $key => $val )
{
// on the attributes ParamaterBag there are other parameters
// which start with a _parametername. We don''t want them.
if ( strpos($key, ''_'') != 0 )
{
$params[ $key ] = $val;
}
}
// now we have all the parameters of the url on $params
...
});