Tôi đã sử dụng Silex trong một ngày và tôi có câu hỏi "ngu ngốc" đầu tiên. Nếu tôi có:Làm thế nào để có được tất cả các tham số GET trên Silex?
$app->get('/cities/{city_id}.json', function(Request $request, $city_id) use($app) {
....
})
->bind('city')
->middleware($checkHash);
Tôi muốn có được tất cả các thông số (city_id) bao gồm trong middleware:
$checkHash = function (Request $request) use ($app) {
// not loading city_id, just the parameter after the ?
$params = $request->query->all();
....
}
Vì vậy, làm thế nào để tôi nhận được city_id (cả tên tham số và giá trị của nó) bên trong phần mềm trung gian. Tôi sẽ có 30 hành động, vì vậy tôi cần một cái gì đó có thể sử dụng và duy trì được.
Tôi đang thiếu gì?
cảm ơn rất nhiều!
Giải pháp
Chúng ta cần phải có được những thông số thêm $ request-> thuộc tính
$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
...
});
nó trông giống như -> middleware() không tồn tại nữa? – Tobias