web-dev-qa-db-ja.com

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()

ビューにフォーマットエラーがあると確信していますが、診断することができませんでした。複数の引数をコントローラーに渡すより効率的な方法はありますか?

17
Cameron Scott

このルートを定義するとき:

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

単一のURI引数がメソッドに渡されると言っています。

次のように、2つの引数を渡してみてください。

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

表示:

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

ルート

Route::get('warden/building/{buildingId}/employee/{employeeId}',[
    'uses'=>'WardenController@deleteWarden',
    'as'=>'delete-warden'
]);

表示

<a href="{{route('delete-building',[$building->id])}}"></a>

コントローラー

public function deleteWarden($buildingId,$employeeId){
    $building = Building::find($buildingId);
    $building->employees()->detach($employeeId);
    return redirect('warden/assign/'.$buildingId)->with('message','Warden Detached successfully');

}
2
Sanaulla

コントローラーに移動して、次のようなコードを記述します。

public function passData()
{

    $comboCoder=['Bappy','Sanjid','Rana','Tuhin'];
    $ffi=['Faisal','Sanjid','Babul','Quiyum','Tusar','Fahim'];
    $classRoom=['Sanjid','Tamanna','Liza'];
    return view('hyper.passData',compact('comboCoder','ffi','classRoom'));
}

/*
Again, in View part use:
(passData.blade.php)
*/

<u>Combocoder:</u>

@foreach($comboCoder as $c)
{{$c}}<br>
@endforeach

<u>FFI</u>

@foreach($ffi as $f)

{{$f}}<br>
@endforeach

<u>Class Room </u>

@foreach($classRoom as $cr)

{{$cr}}<br>
@endforeach
0
Sanjid Mishu