Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 控制器缺少参数2:update()-larvel_Php_Laravel_Controller_Routing_Crud - Fatal编程技术网

Php 控制器缺少参数2:update()-larvel

Php 控制器缺少参数2:update()-larvel,php,laravel,controller,routing,crud,Php,Laravel,Controller,Routing,Crud,我想我的路线有一个错误,但我开始了,我没有找到解决办法。 提交编辑表单时,出现以下错误:缺少App\Http\Controllers\Admin\SportController::update()的参数2 我的控制器: /** * Create a new controller instance. * * @return void */ public function __construct() { $this->middleware('admin'); } /** *

我想我的路线有一个错误,但我开始了,我没有找到解决办法。 提交编辑表单时,出现以下错误:
缺少App\Http\Controllers\Admin\SportController::update()的参数2

我的控制器:

/**
 * 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\SportController@index');
Route::resource('/admin/sports/create', 'Admin\SportController@create');
Route::POST('/admin/sports', 'Admin\SportController@store');
Route::get('/admin/sports/edit/{id}','Admin\SportController@edit');
Route::put('/admin/sports','Admin\SportController@update')->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() }}
{{Html::ul($errors->all())}
{Form::model($sport,array('route'=>array('admin.sports.update',$sport->id),'method'=>PUT'))}
{{Form::label('name','Nom')}
{{Form::text('name',null,array('class'=>'Form control'))}
{{Form::submit('Valider',array('class'=>'btn-btn-flat'))}
{{Form::close()}}
谢谢你的帮助。
Peter.

您应该更改到该位置的路线以获取ID:

Route::put('/admin/sports/{id}','Admin\SportController@update')->name('admin.sports.update');

在您的路线中,您有:

Route::resource('/admin/sports', 'Admin\SportController@index');
对于资源控制器,您不指定方法,只指定它为您执行其余操作的控制器。所以当你这样做的时候:

Route::resource('/admin/sports', 'Admin\SportController');
您将获得以下信息:

Method    |         Uri            |         Name         |          action 
GET|HEAD  | admin/sports           | admin.sports.index   | Admin\SportController@index
POST      | admin/sports           | admin.sports.store   | Admin\SportController@store
DELETE    | admin/sports/{id}      | admin.sports.destroy | Admin\SportController@destroy
PUT|PATCH | admin/sports/{id}      | admin.sports.update  | Admin\SportController@update
GET|HEAD  | admin/sports/{id}/edit | admin.sports.edit    | Admin\SportController@edit
这样看来,您没有将id传递给路由。将您的
表单::model
更改为:

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

第二个参数应该是路由参数数组

为什么要以
route::resource('/admin/sports','admin')的身份执行资源控制器\SportController@index');?如果要排除路由,请查看和部分资源。