Reputation: 2489
I'm using get parameters for search filters, and need to be able to change a value of the query string variable and return the modified url (as a string variable, nothing fancy, no redirect or anything). This is what I have so far and what is happening:
public function index(Request $request){
echo $request->fullUrl();
// outputs https://test.com/search?type=somestring
$request->merge(['type' => 'anotherstring']);
echo $request->fullUrl();
// still outputs https://test.com/search?type=somestring
// is there a way to change a parameter value in the url and
// return the modified url string?
}
I figure if worse comes to worse, I'll just parse the string manually, but it feels like there's a "laravel way" to go about this that I happen to be missing?
Upvotes: 9
Views: 8887
Reputation: 12584
if you need to keep some previous parameter and replace/add others:
$request->fullUrlWithQuery(array_merge($request->all(),['overwritten'=>'changed_value','added'=>'new_value']));
it replaces the query with a merge of previous parameters, adding and overwriting with the new parameters
Upvotes: 0
Reputation: 2543
Use fullUrlWithQuery
instead.
echo $request->fullUrlWithQuery(['type' => 'anotherstring']);
Upvotes: 27
Reputation: 40683
Worse case you can do:
echo url()->current().(!empty($request->all())?"?":"").http_build_query($request->all());
Upvotes: 0