在 Laravel 5 中将多个参数传递给控制器

新手上路,请多包涵

在我的应用程序中,用户可以提醒其他用户有关活动邀请的信息。为此,我需要传递事件的 ID 和要邀请的用户的 ID。

在我的路线文件中,我有:

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

在我看来,我有:

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

在我的控制器中,我有:

     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'));
}

但是,当我到达那条路线时,我收到以下错误:

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

我确定我的视图中有格式错误,但我无法诊断它。有没有更有效的方法将多个参数传递给控制器?

原文由 Cameron Scott 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 518
2 个回答

当您定义此路线时:

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

您是说将单个 URI 参数传递给该方法。

尝试传递两个参数,例如:

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

看法:

 route('remindHelper',['event'=>$eventId,'user'=>$userId]);

原文由 Arthur Samarcos 发布,翻译遵循 CC BY-SA 3.0 许可协议

当在单个路由定义中隐式绑定多个 Eloquent 模型时,您可能希望限定第二个 Eloquent 模型的范围,使其必须是前一个 Eloquent 模型的子模型。例如,考虑这个通过 slug 为特定用户检索博客文章的路由定义:

 use App\Models\Post;
use App\Models\User;

Route::get('/users/{user}/posts/{post:slug}', function (User $user, Post $post) {
   return $post;
});

现在您将在控制器中获得这两个信息。但是如果您需要通过其他方式传递多个参数,您可以点击此链接:希望它可以帮助您:

Laravel 9 在 Blade 中使用参数定义路线

原文由 Mahedi Hasan Durjoy 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题