Getting GET “?” variable in laravel

前端 未结 8 821
夕颜
夕颜 2020-12-16 08:41

Hello I\'m creating API using REST and Laravel following this article.

Everything works well as expected.

Now, I want to map GET request to recognise variabl

8条回答
  •  清酒与你
    2020-12-16 09:35

    I haven't tested on other Laravel versions but on 5.3-5.8 you reference the query parameter as if it were a member of the Request class.

    1. Url

    http://example.com/path?page=2

    2. In a route callback or controller action using magic method Request::__get()

    Route::get('/path', function(Request $request){
     dd($request->page);
    }); 
    
    //or in your controller
    public function foo(Request $request){
     dd($request->page);
    }
    
    //NOTE: If you are wondering where the request instance is coming from, Laravel automatically injects the request instance from the IOC container
    //output
    "2"
    

    3. Default values

    We can also pass in a default value which is returned if a parameter doesn't exist. It's much cleaner than a ternary expression that you'd normally use with the request globals

       //wrong way to do it in Laravel
       $page = isset($_POST['page']) ? $_POST['page'] : 1; 
    
       //do this instead
       $request->get('page', 1);
    
       //returns page 1 if there is no page
       //NOTE: This behaves like $_REQUEST array. It looks in both the
       //request body and the query string
       $request->input('page', 1);
    

    4. Using request function

    $page = request('page', 1);
    //returns page 1 if there is no page parameter in the query  string
    //it is the equivalent of
    $page = 1; 
    if(!empty($_GET['page'])
       $page = $_GET['page'];
    

    The default parameter is optional therefore one can omit it

    5. Using Request::query()

    While the input method retrieves values from entire request payload (including the query string), the query method will only retrieve values from the query string

    //this is the equivalent of retrieving the parameter
    //from the $_GET global array
    $page = $request->query('page');
    
    //with a default
    $page = $request->query('page', 1);
    

    6. Using the Request facade

    $page = Request::get('page');
    
    //with a default value
    $page = Request::get('page', 1);
    

    You can read more in the official documentation https://laravel.com/docs/5.8/requests

提交回复
热议问题