这是我的Datatables jQuery代码:
$('#allUsersTable').DataTable({
processing: true,
serverSide: true,
"bSort": false,
"responsive": true,
ajax: {
url : '{!! route('usersData') !!}',
data: function(d){
d.level = $('#levelFilter').val()
}
},
columns: [
{data: 'checkbox', name: 'checkbox', "width": "20px"},
{data: 'userPic', name: 'userPic', 'className': 'text-center'},
{data: 'email', name: 'email'},
{data: 'created_at', name: 'created_at'},
{data: 'level', name: 'level', 'className': 'text-center'},
{data: 'actions', name: 'actions', 'className': 'text-center'}
]
});
如您所见,我有一个电子邮件列来显示电子邮件(以及姓名和家庭用户详细信息)。
这是通过yajra-laravel-datatables获取列的后端代码(省略了一些不必要的部分):
$users = User::select(['user_id', 'name', 'family', 'email', 'created_at', 'level']);
$datatable = app('datatables')->of($users)
->orderBy('created_at', 'desc')
->editColumn('email', function ($user) {
return '
' . $user->name . ' ' . $user->family . '
<div class="en-text"><a href="mailto:' . $user->email . '" target="_blank">' . $user->email . '</a></div>
';
})
});
return $datatable->make(true);
我们知道,通过数据表搜索框进行全局搜索只会搜索列选项中列出的列。
但是我希望当用户在全局搜索框中输入一些字符时,强制数据表搜索未包含在列选项中的名称和系列列,并且仅通过电子邮件<在后端代码中使用/ strong>专栏。
我该怎么做?
答案 0 :(得分:1)
根据https://laracasts.com的yajra答案,解决方案很简单。
我应该在My columns定义中添加隐藏列name
和family
,如下所示:
columns: [
{data: 'checkbox', name: 'checkbox', "width": "20px"},
{data: 'userPic', name: 'userPic', 'className': 'text-center'},
{data: 'email', name: 'email'},
{data: 'created_at', name: 'created_at'},
{data: 'level', name: 'level', 'className': 'text-center'},
{data: 'actions', name: 'actions', 'className': 'text-center'},
{data: 'name', name: 'name', visible: false},
{data: 'family', name: 'family', visible: false}
]
这很好用。