Я играю с Slim PHP в качестве рамки для RESTful API, и пока это здорово. Супер легко работать, но у меня есть один вопрос, на который я не могу найти ответ. Как я могу получить параметры GET из URL-адреса в Slim PHP?
Например, если бы я хотел использовать следующее:
http://api.example.com/dataset/schools?zip=99999&radius=5
Случай с понедельника? Я переусердствовал? Заранее спасибо!
Вы можете сделать это очень легко в рамках Slim, вы можете использовать:
$paramValue = $app->request()->params('paramName');
$ app здесь – пример Slim.
Или если вы хотите быть более конкретным
// Параметр GET
$paramValue = $app->request()->get('paramName');
// Параметр POST
$paramValue = $app->request()->post('paramName');
Вы бы использовали его так по определенному маршруту
$app->get('/route', function () use ($app) { $paramValue = $app->request()->params('paramName'); });
Вы можете прочитать документацию по объекту запроса http://docs.slimframework.com/request/variables/
Для Slim 3 вам нужно использовать метод getQueryParams()
для объекта Request
PSR 7.
Ссылаясь на документацию :
Вы можете получить параметры запроса как ассоциативный массив объекта Request с помощью getQueryParams ().
Вы также можете получить одно значение параметра запроса с необязательным значением по умолчанию, если параметр отсутствует, используя getQueryParam ($ key, $ default = null).
Я исправил свой api, чтобы получить параметр json body OR url.
$data = json_decode($request->getBody()) ?: $request->params();
Это может не устраивать всех, но это сработало для меня.
Не знаю много о Slim PHP, но если вы хотите получить доступ к параметрам из URL-адреса, вы должны использовать:
$_SERVER['QUERY_STRING']
Вы найдете кучу сообщений в блогах в Google, чтобы решить эту проблему. Вы также можете использовать функцию PHP parse_url .
ЕСЛИ ВЫ ХОТИТЕ ПОЛУЧИТЬ ПАРАМЫ С ИМЯ ПАРАМА
$value = $app->request->params('key');
Метод params () сначала будет искать переменные PUT, затем POST-переменные, а затем GET-переменные. Если переменные не найдены, возвращается null. Если вы хотите только искать определенный тип переменной, вы можете использовать эти методы:
// — Переменная GET
$paramValue = $app->request->get('paramName');
// — переменная POST
$paramValue = $app->request->post('paramName');
// — переменная PUT
$paramValue = $app->request->put('paramName');
ЕСЛИ ВЫ ХОТИТЕ ПОЛУЧИТЬ ВСЕ ПАРАМЕТРЫ ИЗ ЗАПРОСА БЕЗ УКАЗАНИЯ ИМЯ ПАРАМА, ВЫ МОЖЕТЕ ПОЛУЧИТЬ ВСЕ ИЗ ИХ В МАССИВ В ФОРМАТЕ КЛЮЧ => VALUE
$data = json_decode( $app->request->getBody() ) ?: $app->request->params();
$ data будет массивом, который содержит все поля из запроса, как показано ниже.
$data = array( 'key' => 'value', 'key' => 'value', //... );
Надеюсь, это поможет вам!
Используйте $id = $request->getAttribute('id'); //where id is the name of the param
$id = $request->getAttribute('id'); //where id is the name of the param
В Slim 3.0 также работает следующее:
routes.php
require_once 'user.php'; $app->get('/user/create', '\UserController:create');
user.php
class UserController { public function create($request, $response, array $args) { $username = $request->getParam('username')); $password = $request->getParam('password')); // ... } }