51

Does anyone know if it's possible to make use of URL query's within Laravel.

Example

I have the following route:

Route::get('/text', 'TextController@index');

And the text on that page is based on the following url query:

http://example.com/text?color={COLOR}

How would I approach this within Laravel?

4 Answers 4

63

For future visitors, I use the approach below for > 5.0. It utilizes Laravel's Request class and can help keep the business logic out of your routes and controller.

Example URL

admin.website.com/get-grid-value?object=Foo&value=Bar

Routes.php

Route::get('get-grid-value', 'YourController@getGridValue');

YourController.php

/**
 * $request is an array of data
 */
public function getGridValue(Request $request)
{
    // returns "Foo"
    $object = $request->query('object');

    // returns "Bar"
    $value = $request->query('value');

    // returns array of entire input query...can now use $query['value'], etc. to access data
    $query = $request->all();

    // Or to keep business logic out of controller, I use like:
    $n = new MyClass($request->all());
    $n->doSomething();
    $n->etc();
}

For more on retrieving inputs from the request object, read the docs.

Sign up to request clarification or add additional context in comments.

1 Comment

It's $request->query('object'); for query string params.
38

Yes, it is possible. Try this:

Route::get('test', function(){
    return "<h1>" . Input::get("color") . "</h1>";
});

and call it by going to http://example.com/test?color=red.

You can, of course, extend it with additional arguments to your heart's content. Try this:

Route::get('test', function(){
    return "<pre>" . print_r(Input::all(), true) . "</pre>";
});

and add some more arguments:

http://example.com/?color=red&time=now&greeting=bonjour`

This will give you

Array
(
    [color] => red
    [time] => now
    [greeting] => bonjour
)

3 Comments

why make use of Input object over the Request object in this example?
@MattCatellier I believe the request object is for Laravel version >= 5.0
Dont forgot add use Illuminate\Http\Request; near imports
12

Query params are used like this:

use Illuminate\Http\Request;

class ColorController extends BaseController{

    public function index(Request $request){
         $color = $request->query('color');
    }

Comments

0
public function fetchQuery(Request $request){
  $object = $request->query('object');
  $value = $request->query('value');
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.