whitwhoa
whitwhoa

Reputation: 2489

Laravel change get parameter in url string and return

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

Answers (3)

Luca C.
Luca C.

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

ayip
ayip

Reputation: 2543

Use fullUrlWithQuery instead.

echo $request->fullUrlWithQuery(['type' => 'anotherstring']);

Upvotes: 27

apokryfos
apokryfos

Reputation: 40683

Worse case you can do:

 echo url()->current().(!empty($request->all())?"?":"").http_build_query($request->all());

Upvotes: 0

Related Questions