I am using Laravel 5 and need to do a wildcard route, sending the user to different controllers based on the URL type, pulled in from the database.
I need to check the URL slug in the database, and then load the relevant controller/method based on the slug type, held in the database. I am struggling with the final part, which is sending the user to the relevant controller. Below is my route:
Route::any('{slug}', function($slug){
$url = \App\Url_slug::where('url_slug', $slug)->first();
if($url->count()){
switch($url->url_type){
case 'product':
// SEND USER TO PRODUCT CONTROLLER
break;
case 'category':
// SEND USER TO CATEGORY CONTROLLER
break;
case 'page':
// SEND USER TO PAGE CONTROLLER
break;
}
} else {
abort(404);
}
});
What do I need to replace the comments with in order the send the user to the relevant controller?
To do this, you need to load an instance of
app()
and then callmake('Controller')
method as well ascallAction
. Full route below:You can simply resolve a controller instance from the service container, and call methods on that:
This will call the
ProductController@show
action, pass whatever is in$product
as a parameter, and return the rendered Blade template.