В настоящее время я использую инфраструктуру lumen (5.6) для создания API, этот API можно использовать для запроса страницы, например, по ее названию.Маршрут для этого:
Route::group(["prefix" => '/api/v1', "middleware" => ["ContentTypeJson","Paginator"]], function () {
Route::group(["prefix" => '/{databaseIdentifier}', "middleware"=>"DatabaseIdentifier"], function () {
Route::group(["prefix" => '/pages'], function () {
Route::group(["prefix" => '/{title}'], function () {
Route::get("/", "PageController@getPageByTitle");
Route::get("/parents", "SearchController@getParentalSpecies");
Route::get("/all", "PageController@getPageByTitleWithLinks");
Route::get("/overlap/{overlapProperty}", "PageController@getPagesWithOverlap");
Route::put("/", "PageController@overwritePage");
});
});
});
Как вы можете видеть, title
используется в нескольких функциях и контроллерах, то же самое относится к databaseIdentifier
, который используется в промежуточном программном обеспечении для определения потребностей базы данных.для использования.
Однако все параметры URL с пробелом будут преобразованы с %20
вместо пробела, что является ожидаемым поведением.Однако я хотел бы преобразовать это обратно в необработанную строку, что можно сделать с помощью urldecode()
.Но так как это применяется в каждом контроллере и функции, я хотел бы использовать для этого какой-то шаг предварительной обработки.
Я попытался использовать промежуточное программное обеспечение для этого, чтобы изменить параметры маршрута, как предложено здесь (используя $request->route()->setParameter('key', $value);
).
К сожалению, это не работает в люменах, поскольку результатом $request->route()
является массив, а не объект.Я попытался изменить этот массив, но не могу заставить его изменить фактический массив в объекте Request
.Здесь не появляется никаких ошибок.
Итак, вкратце: я ищу способ urldecode каждого параметра URL, который передается моим контроллерам и функциям, не помещая $param = urldecode($param);
везде.
Если вам нужна дополнительная информация, не стесняйтесь спрашивать
Заранее спасибо