通过使用以下代码,我试图更新status列:
我的财务主任:
function getdata(Request $request)
{
if(request()->ajax())
{
return datatables()->of(Casting::latest()->get())
->addColumn('action', function($data){
$button = '<table><tr><td>';
$button .= '<button type="button" name="edit" id="'.$data->id.'" class="edit btn btn-primary btn-sm">Modifier</button>';
$button .= '</td><td>';
$button .= ' <label class="switch" >';
$button .= ' <input type="checkbox" id="'.$data->id.'" class="switch" ';
if ($data->status == 1) {
$button .= "checked";
}
$button .= '><span class="slider round"></span></label>';
$button .= '</td></tr></table>';
return $button;
})
->rawColumns(['action'])
->make(true);
}
return view('Casting.castingss');
}
public function changeStatus(Request $request)
{
$casting = Casting::find($request->id);
$casting->status = $request->status;
$casting->save();
return response()->json(['success'=>'Status change successfully.']);
}
我的剧本:
$('#datatableRows').DataTable({
processing: true,
serverSide: true,
ajax:{
url: "{{ route('castingss.getdata') }}",
},
columns:[
{
data: 'casting_photo',
name: 'casting_photo',
render: function(data, type, full, meta){
return "<img src={{ URL::to('/') }}/castingimages/" + data + " class='list-thumbnail responsive border-0 card-img-left' />";
},
orderable: false
},
{data:'casting_name',
name: 'casting_name',
render:function(data,type,full,meta){
return "<a href='profile'>" + data + "</a>";
}
},
{
data: 'casting_cin',
name: 'casting_cin'
},
{
data: 'casting_phone',
name: 'casting_phone'
},
{
data: 'action',
name: 'action',
orderable: false
}
],
});
$(document).on('change', '.switch', function(){
var status = $(this).prop('checked') == true ? 1 : 0;
var id = $(this).attr('id');
$.ajax({
type: "GET",
dataType: "json",
url: '/changeStatus',
data: {'status': status, 'id': id},
success: function(data){
console.log(data.success)
}
});
});
当我完成任务时,我得到以下错误:"message":“从空值创建默认对象”,在我的Controller中,行:$casting->status = $request->status;
我猜状态变量没有值。如何在datatable中提取开关自定义的值,如何解决这个问题?如果你有什么主意帮我
发布于 2021-06-06 16:59:05
有两种可能性,.One是数据被接收为空,所以最好检查一旦数据传递给控制器是正确的。如果它正确地传递给转换模型的id不是there.So,那么添加验证
public function changeStatus(Request $request)
{
$request->validate(['status'=>'required','id'=>'required']);
$casting = Casting::find($request->id);
if($casting){
$casting->status = $request->status;
$casting->save();
return response()->json(['success'=>'Status change successfully.']);
}
return response()->json(['failed'=>'Status change failed.'],422);
}
更新的
因为您已经将switch
类名用于label
以及input checkbox
,所以
$button .= ' <input type="checkbox" id="'.$data->id.'" class="switch selectRow" ';
然后改变
$(document).on('change', '.selectRow', function(){
https://stackoverflow.com/questions/67861584
复制相似问题