我正在使用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'));
}
错误:
我真的不知道问题出在哪里?任何人都可以告诉我它的解决方案吗?
注意:如果您需要,我可以为您提供更多信息。
答案 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-horizontal','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这对任何人都有帮助。