大家好我将我的php应用程序迁移到laravel。在正式版中,我一直使用x-editable进行内联编辑。现在,我想在laravel中做同样的事情。在我将要编辑的行的ID传递到我的控制器
中的update
方法之前
这是我的代码看起来的样子(html):
<td data-id="{{$subject->id}}" data-type="text" data-name="{{$subject->name}}" class="name" data-pk="{{$subject->id}}">{{$subject->name}}</td>
路线:
Route::put('/subjects/update/{id}', 'SubjectsController@update');
脚本:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
我将id连接到网址,如下所示:
var id = $(this).attr('data-pk');
当我这样做时,它会以undefined
而不是id进行连接。 如何通过正确的ID ?
$('#subjects').editable({
container:'body',
selector:'td.name',
url:'/subjects/update/'+id,
type:'PUT',
validate:function(value){
if ($.trim(value) === '') {
return "Field is required";
}
}
});
控制器:
在我的控制器中,这是我在没有x-editable的情况下执行此操作的方法,如何更新它以匹配用户pk
name
和value
public function update(Request $request, $id)
{
//
$rules = array (
'name' => 'bail|required|max:20|min:5|unique:subjects,name,'.$id,
'level' => 'bail|required|min:4'
);
$validator = Validator::make ( $request->all(), $rules );
if ($validator->fails ()) {
return response()->json ( array (
'errors' => $validator->getMessageBag ()->toArray ()
) );
}
else {
$subject = Subject::findOrFail($id);
$subject->name = $request->name;
$subject->level = $request->level;
$subject->save();
return response ()->json ( $subject );
}
}
这是我现在得到的错误:
POST http://127.0.0.1:8000/subjects/update/undefined 405(方法不允许)
希望我不要在这里混淆自己。在此先感谢您的帮助。
答案 0 :(得分:0)
请将您的路线更新为发布,而不是投放:
Route::post('/subjects/update/{id}', 'SubjectsController@update');
xEditable发出POST请求而不是Put请求
享受编码!