2011-11-14 5 views
43

저는 Slim PHP를 RESTful API를위한 프레임 워크로 사용하고 있으며, 지금까지는 훌륭했습니다. 슈퍼 일하기 쉬운,하지만 내가 대답을 찾을 수없는 한 가지 질문이 있습니다. Slim PHP의 URL에서 GET 매개 변수를 가져 오는 방법은 무엇입니까? 좋은 월요일Slim PHP 및 GET 매개 변수

http://api.example.com/dataset/schools?zip=99999&radius=5 

례 : 나는 다음과 같은 사용하기를 원한다면 예를 들어

? 나는 그것을 overthinking인가? 미리 감사드립니다!

+1

이들은 GET 매개 변수가 아닙니다 ?? 확실합니까? – Galled

+0

브래그! 나는 POST가 아니라 GET을 의미했다. 미안하다. –

+0

$ _GET 변수는 어떻습니까? 작동하지 않습니까? – Galled

답변

93

, 당신은 사용할 수 있습니다 : 여기

$paramValue = $app->request()->params('paramName'); 

$ 응용 프로그램은 슬림 인스턴스입니다.

또는 당신은 너무 특정 경로에서 같은

// 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/

+0

정말 고마워요. 귀하의 답변은 제 문제를 해결하는 데 도움이되었습니다. – Dibish

+0

그래, 우리는 가서 문서를 읽을 수 있지만 대답은 훨씬 더 잘 설명되어있다;) – Pathros

2

슬림 PHP에 대해 많은 확실하지,하지만 당신은 URL에서 매개 변수에 액세스하려면 다음은 사용한다 : 당신은 구글에서 블로그 게시물의 무리를 찾을 수 있습니다

$_SERVER['QUERY_STRING'] 

는이 문제를 해결 할 수 있습니다. PHP 함수 parse_url을 사용할 수도 있습니다. 당신은 슬림 프레임 워크 내에서 매우 쉽게 할 수

+0

조지 P와 화재가 맞으면, 그냥 $ _GET [ 'var']을 사용해야했습니다. SlimPHP의 기본 라우팅 때문에 아마도 멋진 일을 해야겠다고 생각했지만, 그렇지 않습니다. good old fashioned $ _GET [] 잘 작동합니다. 그냥 overthinking - 감사합니다 얘들 아! –

+0

나는 $ app-> request-> get ('paramName');을 고집하는 것이 좋습니다. 심지어 이것은 작동하지 않습니다. – Alex

+0

@Alex 왜 추천 할 수 있습니까? – Holonaut

3

api가 json body 또는 url 매개 변수를 수신하도록 수정했습니다.

$data = json_decode($request->getBody()) ?: $request->params(); 

이것은 모든 사람에게 적합하지 않을 수도 있지만 저에게는 효과적 일 수 있습니다.

1

당신이 PARAMS 함께 매개 변수 이름을 얻으려면

$value = $app->request->params('key'); 

PARAMS() 메소드 첫번째 변수를 GET 다음 변수를 POST 후, 변수를 PUT 검색합니다. 변수가 발견되지 않으면 null이 리턴됩니다.당신은 단지 변수의 특정 유형을 검색하려면, 대신이 방법을 사용할 수 있습니다

// --- 변수

$paramValue = $app->request->get('paramName'); 

// --- POST 변수 GET // --- 변수

$paramValue = $app->request->post('paramName'); 

을 PUT

$paramValue = $app->request->put('paramName'); 

당신이 = FORMAT 키 배열에 그들 모두를 얻을 수 , 매개 변수 이름을 지정하지 않고 요청에서 모든 매개 변수를 얻으려면> VALUE

$data = json_decode($app->request->getBody()) ?: $app->request->params(); 

$ 데이터 배열 될 것이다 아래에서와 같이 요청의 모든 필드를 포함합니다.

$data = array(
    'key' => 'value', 
    'key' => 'value', 
    //... 
); 

희망이 있습니다!

10

슬림 3의 경우 PSR 7 Request 개체에서 getQueryParams() 메서드를 사용해야합니다. the documentation를 인용

:

당신은 getQueryParams를 사용하여 Request 객체에 연관 배열과 쿼리 매개 변수를 얻을 수있다().

getQueryParam ($ key, $ default = null)을 사용하여 매개 변수가 누락 된 경우 선택적 기본값 인 값을 사용하여 단일 쿼리 매개 변수 값을 얻을 수도 있습니다.

+1

게시 해 주셔서 감사합니다. Slim 3와 관련된 질문 및 답변을 찾는 것은 매우 어렵습니다. –

0

사용 $id = $request->getAttribute('id'); //where id is the name of the param 다음도 작동 슬림 3.0

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')); 
     // ... 
    } 
}