jquery - DataTables 警告:表 id=users_table - 请求第 0 行第 4 列的未知参数“操作”
问题描述
我创建了一个列搜索数据表,但我不知道如何使用 CRUD 操作添加 Action 列。
这是我的刀片:users.blade.php。我没有发送 html 部分,因为我没有发现任何困难。
<script type="text/javascript">
$(document).ready(function(){
fetch_data();
function fetch_data(department = '')
{
$('#users_table').DataTable({
processing: true,
serverSide: true,
ajax: {
url:"{{ route('users.index') }}",
data: {department:department}
},
columns:[
{
data: 'id',
name: 'id'
},
{
data: 'name',
name: 'name'
},
{
data: 'deptName',
name: 'deptName',
orderable: false
},
{
data:'email',
name:'email'
},
{
data: 'action',
name: 'action',
orderable: false,
searchable: false
}
]
});
}
</script>
这是我的控制器:UsersController。请帮忙,因为解决这个问题真的很重要。
function index(Request $request)
{
if(request()->ajax())
{
if($request->department)
{
$data = DB::table('users')
->join('department', 'department.deptName', '=', 'users.department')
->select('users.id', 'users.name', 'users.email', 'department.deptName')
->where('users.department', $request->department);
}
else
{
$data = DB::table('users')
->join('department', 'department.deptName', '=', 'users.department')
->select('users.id', 'users.name', 'users.email', 'department.deptName');
}
return datatables()->of($data)->make(true);
}
$department = DB::table('department')
->select("*")
->get();
return view('users', compact('department'));
$data = User::latest()->get();
return Datatables::of($data)
->addIndexColumn()
->addColumn('action', function($row){
$btn = '<a href="javascript:void(0)" class="edit btn btn-primary btn-sm">Read</a>';
return $btn;
})
->rawColumns(['action'])
->make(true);
}
解决方案
您正在使用 ajax 数据表,我将用代码更新您,它可以与过滤器一起正常工作,并在 laravel 中为 ajax 数据表搜索完全可定制的服务器端代码
请不要忘记包含数据表库和其他与数据表相关的库
in your routes/web.php
Route::any('/admin/viewallregisteredusers', 'FrontusersController@viewAllRegisteredClients');
Route::any('/admin/viewallusers_datatable', 'FrontusersController@getAllUsers');
然后在您的控制器中为此添加两个操作
public function viewAllRegisteredClients(){
return view('frontusers.viewallusers');
}
和
public function getAllUsers(Request $request){
$columns = array(
0 => 'id',
1 => 'user_name',
2 => 'user_email',
3 => 'user_type',
4 => 'created_at',
5 => 'updated_at',
);
$limit = $request->input('length');
$start = $request->input('start');
$order = $columns[$request->input('order.0.column')];
$dir = $request->input('order.0.dir');
$query = new Frontuser();
$totalTitles = $query->count();
if (empty($request->input('search.value'))) {
$titles = Frontuser::select('id','user_name','user_email','user_type','created_at','updated_at')->offset($start)
->limit($limit)
->orderBy($order, $dir)
->get();
$totalFiltered = $totalTitles;
$data = array();
}else{
$search = $request->input('search.value');
$titless = Frontuser::where(function ($q) use ($search)
{
$q->where('user_name', 'LIKE', "%{$search}%")
->orWhere('user_email', 'LIKE', "{$search}%")
->orWhere('user_type', 'LIKE', "{$search}%")
->orWhere('created_at', 'LIKE', "{$search}%");
});
$titles = $titless->offset($start)
->limit($limit)
->orderBy($order, $dir)
->get();
$totalFiltered = Frontuser::where(function ($q) use ($search)
{
$q->where('user_name', 'LIKE', "%{$search}%")
->orWhere('user_email', 'LIKE', "{$search}%")
->orWhere('user_type', 'LIKE', "{$search}%")
->orWhere('created_at', 'LIKE', "{$search}%");
})->count();
}
if (!empty($titles)) {
$data = array();
$count = 1;
foreach ($titles as $title) {
$id= base64_encode(serialize($title->id));
$nestedData['sno'] = $count;
$nestedData['user_name'] = ucfirst($title->user_name);
$nestedData['user_email'] = $title->user_email;
$nestedData['user_type'] = $title->user_type;
$nestedData['created_at'] = date('d-m-Y', strtotime($title->created_at));
$nestedData['updated_at'] = '<div class="dropdown">
<button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">Actions
<span class="caret"></span></button>
<ul class="dropdown-menu">
<li><a href='.action("FrontusersController@editUser",$id).'>Edit</a></li>
<li><a href='.action("FrontusersController@adminChangeUserPassword",$id).'>Change Password</a></li>
</ul>
</div>';
$data[] = $nestedData;
$count++;
}
}
$json_data = array(
"draw" => intval($request->input('draw')),
"recordsTotal" => intval($totalTitles),
"recordsFiltered" => intval($totalFiltered),
"data" => $data,
);
echo json_encode($json_data);
}
你的视图文件看起来像这样
<div id="content-container">
<!--start upper content-->
<div id="page-head">
<!--Page Title-->
<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
<div id="page-title">
<h1 class="page-header text-overflow">View All User</h1>
</div>
<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
<!--End page title-->
<!--Breadcrumb-->
<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
<ol class="breadcrumb">
<li><a href="#"><i class="demo-pli-home"></i></a></li>
<li><a href="#">User</a></li>
<li class="active">View all Users</li>
</ol>
<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
<!--End breadcrumb-->
</div>
<!--===================================================-->
<!--End upper content-->
<!--Page content-->
<!--===================================================-->
<div id="page-content">
<div style="text-align:center">
<?php echo Helpers::displayAlert(); ?>
</div>
<!-- Basic Data Tables -->
<!--===================================================-->
<div class="panel">
<div class="panel-heading">
<h3 class="panel-title">All User List</h3>
</div>
<div class="panel-body">
<table id="datatables" class="table table-striped table-bordered">
<thead>
<tr>
<th>Sno</th>
<th>Name</th>
<th>Email</th>
<th>User Type</th>
<th>Date Of Joining</th>
<th data-sortable="false" >Action</th>
</tr>
</thead>
</table>
</div>
</div>
<!--===================================================-->
<!-- End Striped Table -->
</div>
<!--===================================================-->
<!--End page content-->
</div>
<script type="text/javascript">
$(document).ready(function ()
{
$('#datatables').DataTable({
"processing": true,
"serverSide": true,
"ajax":{
"url": "<?php echo URL::asset('admin/viewallusers_datatable');?>",
"dataType": "json",
"type": "POST",
"data":{ _token: "{{csrf_token()}}"}
},
"dom": 'lBfrtip',
"buttons": [
{
extend: 'collection',
text: 'Export',
buttons: [
'copy',
'excel',
'csv',
'pdf',
'print'
]
}
],
"columns": [
{ "data": "sno" },
{ "data": "user_name" },
{ "data": "user_email" },
{ "data": "user_type" },
{ "data": "created_at" },
{ "data": "updated_at" },
],
});
$('.dropdown-toggle').dropdown()
});
</script>
你可以根据需要修改它
推荐阅读
- javascript - 用于循环的 Java 脚本
- python - 如何在python中拆分这种类型的字典
- python - Python - 打印特定模式
- database - 在 java spring boot 中使用现有数据库和不存在数据库的最佳方法
- c# - 为什么空的 OpenGL 程序使用完整的内核?
- php - 在 TCPDF 中使用 writeHTML 删除特定的 html 单元格边框
- bluetooth-lowenergy - BLE SPP 配置文件
- regex - sed 替换 docker-compose 中的 docker 镜像标签
- c++ - c++ linux:如何追踪异常的真正原因?
- javascript - JavaScript 减少内部映射