Laravel 5.2数据更新不起作用:显示错误

时间:2016-03-10 05:39:46

标签: php html laravel laravel-5

我正在使用Laravel 5.2 PHP框架。当我尝试通过Error更新任何数据时,我不知道为什么会这样?我在谷歌搜索但我无法得到任何解决我问题的结果。

我的 routes.php:

Route::group(['prefix' => 'jobs'], function () {
    Route::get('all', ['as' => 'allJobs' , 'uses' => 'JobController@index']);
    Route::get('create', ['as' => 'addNewJobs' , 'uses' => 'JobController@create']);
    Route::post('save', ['as' => 'saveJob' , 'uses' => 'JobController@store']);
    Route::get('edit/{id}', ['as' => 'editJobs' , 'uses' => 'JobController@edit']);
    Route::put('update', ['as' => 'updateJob' , 'uses' => 'JobController@update']);
    Route::get('delete/{id}', ['as' => 'deleteJob' , 'uses' => 'JobController@destroy']);

});

我的 JobController.php:

public function update(Request $request, $id=0)
{
    $id = $request->input("id");        
    $job = Jobs::find($id);
    $job->jobTitle = $request->input('jobTitle');
    $job->jobCat = $request->input('jobCat');
    $job->jobSummary = $request->input('jobSummary');

    $job->save();        
    return redirect(route('allJobs'));
}

错误:

Error Image

我真的不知道问题出在哪里?任何人都可以告诉我它的解决方案吗?

  

注意:如果您需要,我可以为您提供更多信息。

5 个答案:

答案 0 :(得分:1)

试试这个:

routes.php文件:

Route::group(['prefix' => 'jobs'], function () {
    Route::get('all', ['as' => 'allJobs' , 'uses' => 'JobController@index']);
    Route::get('create', ['as' => 'addNewJobs' , 'uses' => 'JobController@create']);
    Route::post('save', ['as' => 'saveJob' , 'uses' => 'JobController@store']);
    Route::get('edit/{id}', ['as' => 'editJobs' , 'uses' => 'JobController@edit']);
    Route::post('update', ['as' => 'updateJob' , 'uses' => 'JobController@update']);
    Route::get('delete/{id}', ['as' => 'deleteJob' , 'uses' => 'JobController@destroy']);

});

JobController.php :(确保在JobController.php中use Input;之后添加namespace

public function update()
{
    $input = Input::all();
    $id = $input["id"];        
    $job = Jobs::findOrFail($id);
    if( !isset($job->id) )  // check if job is found
       return redirect('to-some-404-route-if-not-found'); 
    $job->jobTitle = $input['jobTitle'];
    $job->jobCat = $input['jobCat'];
    $job->jobSummary = $input['jobSummary'];

    if( $job->save() ) 
       return redirect(route('allJobs'));
    # return something; add some flash message that indicates failure
}

答案 1 :(得分:0)

您访问路线"工作/更新"通过GET。将http方法更改为PUT,可能在您的表单中或在您的ajax请求中

答案 2 :(得分:0)

您已将更新路线定义为

Route::put('update', ['as' => 'updateJob' , 'uses' => 'JobController@update']);

替换此行
Route::put('update/{id}', ['as' => 'updateJob' , 'uses' => 'JobController@update']);

然后你必须添加你的表格

method_field('PUT');

答案 3 :(得分:0)

  

添加更新/ {id}后,我无法编辑其显示内容:prntscr.com/addc21和我的edit.blade.php声明格式为`{!! Form :: model($ job,array('route'=>'updateJob','class'=>'form-horizo​​ntal','id'=>'export-form','files'=>真))!}

从您的评论中,您在粘贴到此处时收到了异常 - http://prntscr.com/addc21,因为在您的edit.blade.php文件中您有数组('route'=>'updateJob'...)并且因为您已经更改了更新/ {id}的路由,所以您需要传递该ID 所以只需更换 **

  

route'=> 'updateJob'

  

'route'=> [ 'updateJob',$的jobId]

对于这个问题 - http://prntscr.com/addf7s你能不能提供JobController第90行的内容。我只是假设你导入了错误的Request class。

答案 4 :(得分:0)

我发现了我的问题。我的问题是jobs.blade.php。第一次我没有传递任何方法,而$job变量也在Form。现在我添加了两个{ {1}} hidden字段用于获取input值和method的值。如果我用下面的代码替换id表单,那么它运行良好。

blade

感谢all.Hope这对任何人都有帮助。