【发布时间】:2012-05-04 19:57:18
【问题描述】:
我已经使用 Silex 一天了,我有第一个“愚蠢”的问题。如果我有:
$app->get('/cities/{city_id}.json', function(Request $request, $city_id) use($app) {
....
})
->bind('city')
->middleware($checkHash);
我想获取中间件中包含的所有参数(city_id):
$checkHash = function (Request $request) use ($app) {
// not loading city_id, just the parameter after the ?
$params = $request->query->all();
....
}
那么,我如何在中间件中获取 city_id(参数名称及其值)。我将有大约 30 个动作,所以我需要一些可用和可维护的东西。
我错过了什么?
非常感谢!
解决方案
我们需要获取那些$request->attributes
的额外参数$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
...
});
【问题讨论】:
-
看起来 ->middleware() 已经不存在了?