Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Access query string values from Laravel

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?

like image 835
Melvin Koopmans Avatar asked Jul 14 '14 19:07

Melvin Koopmans


People also ask

How to get request parameters in Laravel?

To retrieve the query parameters on your Laravel backend, you can make use of either the "Request" class or the "request()" helper method. Imagine you want to get the "search" query from the URL, you can do as follows. $searchQuery = $request->query('search');

How can pass query string in URL in laravel?

You can pass query string to URL in laravel using named route and controller action. You can pass query string as comma separated array to named route and controller action and redirect to URL.

Does laravel have request?

The has MethodThe $request->has() method will now return true even if the input value is an empty string or null . A new $request->filled() method has been added that provides the previous behaviour of the has() method.


2 Answers

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.

like image 127
camelCase Avatar answered Oct 15 '22 17:10

camelCase


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 ) 
like image 45
Kryten Avatar answered Oct 15 '22 19:10

Kryten