Тонкие параметры PHP и GET

Я играю с 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')); // ... } }