Ariful Islam
Ariful Islam

Reputation: 15

How to pass value in URL in Laravel

I want to click on "View Detail" button and go to another page "/viewdeail/id=2", here id=2 is comes from the View Detail button click. So far I prepare this snippet.

Controller:

public function schooldetailviewid($school_id)
     {
        return view('viewdeail/school_id={$school_id}', compact('school_id'));
     }

Route

Route::get('/viewdeail/school_id={school_id}', 'ViewController@schooldetailviewid')->name('schooldetail');

I am very much confused about how to solve this.

Upvotes: 0

Views: 4437

Answers (4)

Md Azizur Rahman
Md Azizur Rahman

Reputation: 375

 Route::group(['as'=>'admin.','prefix'=>'admin','namespace'=>'Admin','middleware'=>['auth','admin']], function (){

    Route::resource('category','CategoryController');

}); 

public function index()
    {
        $categories = Category::latest()->get();
        return view('admin.category.index',compact('categories'));
    }

Upvotes: 0

Chetam Okafor
Chetam Okafor

Reputation: 573

you can achieve this in a couple of ways.

you could do,

$school_id = $request->get('id');

or

$school_id = YourModel::find('$id');

you can use Request to fetch your data

Controller

public function schooldetailviewid(Request $request)
{ 

$school_id = $request->get('id');

return view("viewdeatil/school_id/$school_id", compact('school_id'));
}

Route

your route should look like this;

Route::get('/viewdeail/school_id/{school_id}', 'ViewController@schooldetailviewid')->name('schooldetail');

Blade your a tag should look like this;

<a href="{{route('schooldetail', $school_id->id)}}">getDetails</a>

Upvotes: 0

MrLizzard
MrLizzard

Reputation: 178

With Laravel, if you need to pass a required parameter in your route, you need to specify it into your routes/web.php file, and get it from your controller action.

This the common way to do that:

// routes/web.php

Route::get('/viewdeail/{schoolId}', 'ViewController@details')->name('schooldetail');
// app/Http/Controllers/ViewController.php

class ViewController extends Controller {

    ...

    public function details($schoolId) {
        // your view located in ressources/views folder
        return view('viewdeail/', compact('schoolId'));
    }

}

Now, if you want to just get parameters like domain.tld/viewdeail?schoolId=3 for example, you need to remove {schoolId} in the previously defined route in the routes/web.php file, and edit your controller and proceed like that:

// app/Http/Controllers/ViewController.php

use Illuminate\Http\Request; // we need the Request class, so import it

class ViewController extends Controller {

    ...

    public function details(Request $request) {
        $schoolId = $request->query('schoolId');

        // your view located in ressources/views folder
        return view('viewdeail/', compact('schoolId'));
    }

}

Upvotes: 0

Angad Dubey
Angad Dubey

Reputation: 5452

If you are passing the parameter this way /viewdeail?id=2

Then in your controller you need to use the Request Object to fetch it:

public function schooldetailviewid(Request $request)
{ 

    $school_id = $request->get('id');

    return view("viewdeatil/school_id=$school_id", compact('school_id'));
}

Please review the Laravel routing documentation: https://laravel.com/docs/5.8/routing#route-parameters

Upvotes: 2

Related Questions