Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Passing multiple parameters to controller in Laravel 5

In my application, a user has the ability to remind another user about an event invitation. To do that, I need to pass both the IDs of the event, and of the user to be invited.

In my route file, I have:

Route::get('events/{id}/remind', [ 'as' => 'remindHelper', 'uses' => 'EventsController@remindHelper']); 

In my view, I have:

{!!link_to_route('remindHelper', 'Remind User', $parameters = array($eventid = $event->id, $userid = $invitee->id) )!!} 

In my controller, I have:

    public function remindHelper($eventid, $userid) {     $event = Events::findOrFail($eventid);     $user = User::findOrFail($userid);     $invitees = $this->user->friendsOfMine;     $invited = $event->helpers;     $groups = $this->user->groupOwner()->get();     return view('events.invite_groups', compact('event', 'invitees', 'invited', 'groups')); } 

However, when I hit that route, I receive the following error:

Missing argument 2 for App\Http\Controllers\EventsController::remindHelper() 

I'm sure I have a formatting error in my view, but I've been unable to diagnose it. Is there a more efficient way to pass multiple arguments to a controller?

like image 887
Cameron Scott Avatar asked Jul 28 '15 16:07

Cameron Scott


1 Answers

When you define this route:

Route::get('events/{id}/remind', [ 'as' => 'remindHelper', 'uses' => 'EventsController@remindHelper']); 

You are saying that a single URI argument will be passed to the method.

Try passing the two arguments, like:

Route::get('events/{event}/remind/{user}', [ 'as' => 'remindHelper', 'uses' => 'EventsController@remindHelper']); 

View:

route('remindHelper',['event'=>$eventId,'user'=>$userId]); 
like image 178
Arthur Samarcos Avatar answered Sep 22 '22 11:09

Arthur Samarcos