Laravel更新方法通过模型名称而不是ID

时间:2015-04-27 16:26:50

标签: php model-view-controller laravel-4

调用更新方法时,我的资源路径出现问题。

我收到此错误:

Creating default object from empty value

控制器:

public function update($id)
{
    $input = Input::all();
    $validation = Validator::make($input, Vehicle::$rules, Vehicle::$messages);

    if ($validation->passes())
    {
        $this->vehicle->update($id, $input);
        return Redirect::route('admin.vehicles.index')->with('success', 'Car Updated');
    }

    return Redirect::back()
        ->withInput()
        ->withErrors($validation);
}

存储库:

public function update($id, $input)
{
    $vehicle = Vehicle::find($id);
    $vehicle->VRM = $input['VRM'];
    $vehicle->make = $input['make'];
    $vehicle->model = $input['model'];
    $vehicle->description = $input['description'];
    $vehicle->save();
}

路线:

Route::resource('/admin/vehicles', 'VehiclesController');

如果我打印ID,则会显示{vehicle}。

我的表格是:

{{ Form::open(['route' => 'admin.vehicles.update', 'class' => 'form-horizontal edit-vehicle-form', 'method' => 'PATCH']) }}

    // input fields etc

{{ Form::close() }}

我认为表格可能有问题吗?因为抛出错误时URL是:

http://localhost/admin/vehicles/%7Bvehicles%7D

在使用CRUD应用程序的资源路由之前从未遇到任何问题,并且无法查看出错的地方?

1 个答案:

答案 0 :(得分:2)

您需要更新路线中的ID ...

{{ Form::open(['route' => array('admin.vehicles.update', $vehicle->id), 'class' => 'form-horizontal edit-vehicle-form', 'method' => 'PATCH']) }}