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?
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');
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.
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.
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.
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 )
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With