2016-11-09 13 views
2

私のルートにはエラーがありますが、開始して解決策が見つかりません。 私は私の編集フォームを送信すると、私はこのエラーがあります:Missing argument 2 for App\Http\Controllers\Admin\SportController::update()
マイコントローラ:コントローラーの引数2がありません:update() - Laravel

/** 
* Create a new controller instance. 
* 
* @return void 
*/ 
public function __construct() 
{ 
    $this->middleware('admin'); 
} 

/** 
* Display a listing of the resource. 
* 
* @return Response 
*/ 
public function index() 
{ 
    // Récupère tous les sports 
    $sports = Sport::all(); 

    // Charge la vue et passe la liste des sports en paramètre 
    return view('admin.sports.index') 
     ->with('sports', $sports);  
} 

/** 
* Show the form for creating a new resource. 
* 
* @return Response 
*/ 
public function create() 
{ 
    return view('admin.sports.create'); 
} 

/** 
* Store a newly created resource in storage. 
* 
* @return Response 
*/ 
public function store(Request $request) 
{ 
    $validator = Validator::make($request->all(), [ 
     'name' => 'required|max:255', 
    ]); 

    // process the login 
    if ($validator->fails()) { 
     return Redirect::back()->withErrors($validator) 
           ->withInput(); 
    } 

    Sport::create($request->all()); 

    Session::flash('message', 'Félicitation, vous avez crée un sport !'); 
    return redirect('/admin/sports'); 
} 

/** 
* Display the specified resource. 
* 
* @param int $id 
* @return Response 
*/ 
public function show($id) 
{ 
    // 
} 

/** 
* Show the form for editing the specified resource. 
* 
* @param int $id 
* @return Response 
*/ 
public function edit($id) 
{ 
    // get the nerd 
    $sport = Sport::find($id); 

    // show the edit form and pass the nerd 
    return view('admin.sports.edit')->with('sport', $sport); } 

/** 
* Update the specified resource in storage. 
* 
* @param int $id 
* @return Response 
*/ 
public function update(Request $request, $id) 
{ 

    $validator = Validator::make($request->all(), [ 
     'name' => 'required|max:255', 
    ]); 

    // process the login 
    if ($validator->fails()) { 
     return Redirect::back()->withErrors($validator) 
           ->withInput(); 
    } 
     $sport = Sport::find($id); 
     $sport->name= Input::get('name'); 
     $sport->save(); 

     Session::flash('message', 'Félicitation, vous avez mis à jour un sport !'); 
     return redirect('/admin/sports'); 
} 

/** 
* Remove the specified resource from storage. 
* 
* @param int $id 
* @return Response 
*/ 
public function destroy($id) 
{ 
    // 
} 

マイルーティング:

Route::resource('/admin/sports', 'Admin\[email protected]'); 
Route::resource('/admin/sports/create', 'Admin\[email protected]'); 
Route::POST('/admin/sports', 'Admin\[email protected]'); 
Route::get('/admin/sports/edit/{id}','Admin\[email protected]'); 
Route::put('/admin/sports','Admin\[email protected]')->name('admin.sports.update'); 

マイビュー:edit.blade.php

{{ Html::ul($errors->all()) }} 

{{ Form::model($sport, array('route' => array('admin.sports.update', $sport->id), 'method' => 'PUT')) }} 

<div class="form-group"> 
    {{ Form::label('name', 'Nom') }} 
    {{ Form::text('name', null, array('class' => 'form-control')) }} 
</div> 
<div class="right-align"> 
    {{ Form::submit('Valider', array('class' => 'btn btn-flat')) }} 
    <a class="btn btn-flat" href="{{ URL::to('admin/sports') }}">Annuler</a> 
</div> 

{{ Form::close() }} 

ありがとうございます。 ピーター。

+0

なぜあなたはルート 'としてリソースコントローラをやっているの配列でなければなりませんが::リソース(「/管理/スポーツ」、「管理\ SportController @index '); '?ルートを除外する場合は、https://laravel.com/docs/5.3/controllers#resource-controllersおよび部分リソースを参照してください。 – kyle

答えて

4

あなたがIDをキャッチするためにこれにルートを変更する必要があります。

あなたが持っている自分のルートで
Route::put('/admin/sports/{id}','Admin\[email protected]')->name('admin.sports.update'); 
+0

私はdownvoteを教えていただけますか? –

1

:リソースコントローラの場合

Route::resource('/admin/sports', 'Admin\[email protected]'); 

をあなたの方法、ちょうどコントローラを指定しませんあなたのために残りをします。だから、やるとき:

Route::resource('/admin/sports', 'Admin\SportController'); 

あなたは、次を得る:あなたがルートにIDを渡していないように見えることで

Method |   Uri   |   Name   |   action 
GET|HEAD | admin/sports   | admin.sports.index | Admin\[email protected] 
POST  | admin/sports   | admin.sports.store | Admin\[email protected] 
DELETE | admin/sports/{id}  | admin.sports.destroy | Admin\[email protected] 
PUT|PATCH | admin/sports/{id}  | admin.sports.update | Admin\[email protected] 
GET|HEAD | admin/sports/{id}/edit | admin.sports.edit | Admin\[email protected] 

を。あなたのForm::modelに変更します。

Form::model($sport, array('route' => array('admin.sports.update', array('id', $sport->id)), 'method' => 'PUT')) 

第二パラメータはルートパラメーター

関連する問題