【问题标题】:Laravel 5.2 Data Update Not Working : Showing ErrorLaravel 5.2 数据更新不工作:显示错误
【发布时间】:2016-03-10 05:39:46
【问题描述】:

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

我的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'));
}

错误:

我真的不知道问题出在哪里?谁能告诉我它的解决方案?

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

【问题讨论】:

    标签: php html laravel laravel-5


    【解决方案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 中的 namespace 之后添加 use Input;

    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
    }
    

    【讨论】:

    • 我在namespace 之后添加了use Input,并且找不到它的显示输入类。这只是一个错误。感谢您的帮助。
    • 要修复该错误,您需要将此行 'Input' => Illuminate\Support\Facades\Input::class 添加到 app.php 中的 aliases 中。并确保在那之后运行 composer dump-autoload。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      您已将更新路线定义为

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

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

      那么你必须在你的表单中添加

      method_field('PUT');
      

      【讨论】:

      • 我试过{!! method_field('PUT') !!}然后它显示错误Creating default object from empty value
      • 能否请您显示视图部分。 Route::put('update/{id}', ['as' => 'updateJob' , 'uses' => 'JobController@update']);我想你想念路线中的 id
      • prntscr.com/add9il 这是视图部分,当我单击更新时,它显示错误。
      • 我声明了Route::get('edit/{id}', ['as' => 'editJobs' , 'uses' => 'JobController@edit']);,所以它的编辑没问题,但它不会将更新的信息保存到数据库中。
      • 在添加 update/{id} 后,我无法编辑其显示的任何内容:prntscr.com/addc21 和我的 edit.blade.php 声明形式是` {!! Form::model($job,array('route' => 'updateJob', 'class' => 'form-horizo​​ntal','id'=> 'export-form', 'files' => true))! !}`
      【解决方案4】:

      添加 update/{id} 后,我无法编辑其显示的任何内容:prntscr.com/addc21 并且我的 edit.blade.php 声明的形式是 ` {!! Form::model($job,array('route' => 'updateJob', 'class' => 'form-horizo​​ntal','id'=> 'export-form', 'files' => true))! !}

      根据您的评论,您在此处粘贴时遇到了异常 - http://prntscr.com/addc21 因为在您的 edit.blade.php 文件中您有 array('route' => 'updateJob' ...) 并且因为您'已经改变了更新/{id} 的路线,现在你需要传递那个 id 所以简单地替换 **

      路线' => 'updateJob'

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

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

      【讨论】:

        【解决方案5】:

        我找到了我的问题。我的问题是jobs.blade.phpfile。第一次我没有通过任何方法,$job 变量也在Form 中。现在我添加了两个hidden input 字段获取method 值和ids 值。如果我用下面的代码替换blade 表单,那么它工作得很好。

        {!! Form::model($job,array('route' => 'updateJob', 'class' => 'form-horizontal',  'id'=> 'add-form', 'files' => true)) !!}
        <input type='hidden' name='_method' value='put'>
        <input type='hidden' name='id' value='{!! $job->id !!}'>
        
        //here is other all fields
        {!! Form::close() !!}
        

        谢谢大家。希望这对任何人都有帮助。

        【讨论】:

          猜你喜欢
          • 2016-04-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-09-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多