Basher
Basher

Reputation: 61

How can i pass parameter using ? in url in Laravel

I want to pass parameter using ? in url, like

http://example.com/somthing?name=myname&phone=12121212

when i add a '?' in Route file it shows 404

In my route file

Route::get('test?id={id}&name={name}','TestController@test')->name('frontend.test');

My controller

public function test($id, $name)
{
    
    dd($name);
}

But when i use it like this works fine

Route File:

Route::get('test/id={id}&name={name}','TestController@test')->name('frontend.test');

Controller:

public function test(Request $request)
{
    
    dd($request->route()->parameters());
}

i have a project with raw php i want to convert it to Laravel, so i don't want to change the url structure.

how can i achieve this in Laravel route.

Upvotes: 0

Views: 612

Answers (1)

Professor
Professor

Reputation: 908

I wouldn't define the parameters within the route.

Route::get('test','TestController@test')->name('frontend.test');

I prefer to validate and get the request parameters like this:

use Illuminate\Http\Request;

...

public function test(Request $request)
{
    $params = $request->validate([
        'id' => 'required|numeric',
        'name' => 'required|alpha'
    ]);

    dd($params['id'], $params['name']);
}

Upvotes: 1

Related Questions