问题描述
当我在laravel中使用yajra数据表时,希望有所帮助
搜索选择选项仅显示当前页面,请注意以下屏幕快照,因为Iam试图在搜索选项中获取(管理员,编辑者和用户),但显示(仅用户和编辑者)。如下面的屏幕截图
https://i.stack.imgur.com/wUAv6.png
这就是我使用<script src="//cdn.datatables.net/1.10.7/js/jquery.dataTables.min.js"></script>
的引用js,我通过{!! $dataTable->scripts() !!} and {!! $dataTable->table() !!}
来获取刀片文件中的数据
下面是我对UsersDataTable.php的整个代码
<?php
namespace App\DataTables;
use App\User;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Builder;
use Yajra\DataTables\Html\Column;
use Yajra\DataTables\Services\DataTable;
class UsersDataTable extends DataTable
{
public function dataTable($query)
{
return datatables()
->eloquent($query)
->editColumn('created_at',function ($query) {
return Carbon::parse($query->created_at)->format('Y-m-d');
})
->addColumn('roles',function ($query) {
return $query->roles->map(function ($role) {
return $role->name;
})->implode('<br>');
})
->editColumn('profile',function ($model) {
return $model->profile->lang == "en" ? __("lang.English") : ($model->profile->lang == "ar" ? __("lang.Arabic") : ($model->profile->lang == Null ? __("lang.Without") :
''));
})
->filterColumn('profile.lang',function ($query,$keyword) {
if (stristr(__("lang.English"),$keyword))
$query->whereHas('profile',function (Builder $query) {
$query->where('lang','en');
});
elseif (stristr(__("lang.Arabic"),'ar');
});
elseif (stristr(__("lang.Without"),Null);
});
})
->filterColumn('roles',$keyword) {
if (stristr('Editor',$keyword))
$query->whereHas('roles',function (Builder $query) {
$query->where('name','Editor');
});
elseif (stristr('User','User');
});
elseif (stristr('Admin','Admin');
});
})
->addColumn(
'show','<a href="{{ url("profile/".$id)}}" class="btn btn-primary btn-sm d-flex flex-nowrap"><i class="fas fa-eye mr-1 my-auto"></i> {{ __("lang.Show") }}</a>'
)
->addColumn(
'edit','<a href="{{ route(adminview("users.edit"),$id)}}" class="btn btn-info btn-sm d-flex flex-nowrap"><i class="fas fa-edit mr-1 my-auto"></i> {{ __("lang.Edit") }}</a>'
)
->addColumn(
'delete','admin.users_delBtn'
)
->addColumn('checkbox','<input type="checkbox" name="checked[]" class="item_checkbox" value="{{ $id }}" />')
->rawColumns([
'checkbox','show','edit','delete','roles'
]);
}
public function query(User $model)
{
return $model->newQuery()->with('roles','profile')
->selectRaw('users.*')
}
public function html()
{
return $this->builder()
->setTableId('users-table')
->minifiedAjax()
->orderBy(1)
->columns($this->getColumns())
->parameters([
'dom' => 'Blfrtip','buttons' => [
['create','print','excel','reload'],['className' => 'delBtn','text' => '<i class="fa fa-trash"></i> ' . trans("lang.Delete")]
],'lengthMenu' => [[10,25,50,100,250,-1],[10,trans('lang.All')]],'initComplete' => "function () {
this.api().columns([1,2,3,6]).every(function () {
var column = this;
var input = document.createElement(\"input\");
$(input).attr( 'style','text-align: center;width: 100%');
$(input).appendTo($(column.footer()).empty())
.on('keyup',function () {
column.search($(this).val(),false,true).draw();
});
});
this.api().columns([4,5]).every( function () {
var column = this;
var select = $('<select><option value=\"\"></option></select>')
.appendTo( $(column.footer()).empty() )
.on( 'change',function () {
var val = $.fn.dataTable.util.escapeRegex(
$(this).val()
);
column
.search( val )
.draw();
} );
column.data().unique().sort().each( function ( d,j ) {
select.append( '<option value=\"'+d+'\">'+d+'</option>' )
} );
} );
}",]);
}
protected function getColumns()
{
return [
Column::make('checkbox')
->title('<input type="checkbox" class="check_all" onclick="check_all()" />')
->orderable(false)
->searchable(false)
->exportable(false)
->printable(false),Column::make('id')
->title(__('lang.User id')),Column::make('name')
->title(__('lang.Name')),Column::make('email')
->title(__('lang.Email')),Column::make('roles')
->title(__('lang.Role')),Column::make('profile','profile.lang')
->title(__('lang.Favorite language')),Column::make('created_at')
->title(__('lang.Created_at')),Column::computed('show')
->title(__('lang.Show'))
->orderable(false)
->searchable(false)
->exportable(false)
->printable(false),Column::computed('edit')
->title(__('lang.Edit'))
->orderable(false)
->searchable(false)
->exportable(false)
->printable(false),Column::computed('delete')
->title(__('lang.Delete'))
->orderable(false)
->searchable(false)
->exportable(false)
->printable(false),];
}
protected function filename()
{
return 'Users_' . date('YmdHis');
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)