php - Laravel - 带有 post 方法的数据表显示原始数据而不是表格
问题描述
我有一个审计跟踪报告,根据用户选择的日期范围显示数据。所以用户将在页面中选择范围(审计),当点击提交时将重定向到页面(审计视图)。
我想在数据表中显示数据,但在 audits_view 中,我得到的结果只是这样的原始数据
{"draw":0,"recordsTotal":490,"recordsFiltered":490,"data":[{"id":144586,"event":"created","created_at":"2021-05-19 10:28:50.660","auditable_type":"App\\Model\\Loglogin","user":null},{"id":144585,"event":"created","created_at":"2021-05-19
这是 audits_view 刀片和控制器
<table id="user_table" class="table table-bordered data-table">
<thead>
<tr>
<th width="35%">auditable_type</th>
<th width="35%">event</th>
</tr>
</thead>
</table>
<script>
$(document).ready(function(){
$('#user_table').DataTable({
processing: true,
serverSide: true,
ajax: {
url: "{{url('/')}}/report/audits",
type: "POST",
dataType: "json",
'data': function ( d ) {
d._token = "{{ csrf_token() }}";
},
columns: [
{
data: 'auditable_type',
name: 'auditable_type'
},
{
data: 'event',
name: 'event'
},
]
});
});
</script>
这是控制器
public function audits_view(Request $request)
{
$this->authorize('view_audit_trails');
$user = Auth::user();
$date1= $request->input('date1');
$date2= $request->input('date2');
$data = \OwenIt\Auditing\Models\Audit::with('user')
->select(['id', 'event', 'created_at', 'auditable_type'])
->whereDate('created_at','>=',$date1)>whereDate('created_at','<=',$date2)->get();
return DataTables::of($data)
->make(true);
return view('report.audits_view', compact('date1','date2','user'));
解决方案
以下只是基本思想:
视图函数应该是这样的:
public function audits_view(Request $request) {
$this->authorize('view_audit_trails');
$user = Auth::user();
$date1= $request->input('date1');
$date2= $request->input('date2');
return view('report.audits_view', compact('date1','date2','user'));
}
对于数据表,您应该创建新的发布路线,并且在该路线上,功能应该是这样的:
public function audits_data(Request $request) {
$date1= $request->input('date1');
$date2= $request->input('date2');
$data = \OwenIt\Auditing\Models\Audit::with('user')
->select(['id', 'event', 'created_at', 'auditable_type'])
->whereDate('created_at','>=',$date1)>whereDate('created_at','<=',$date2);
return DataTables::of($data)
->make(true);
}
js应该是这样的:
$('#user_table').DataTable({
processing: true,
serverSide: true,
ajax: {
url: "{{url('/')}}/report/audits",
type: "POST",
dataType: "json",
data: function ( d ) {
d._token = "{{ csrf_token() }}",
d.date1 = $('#date1').val(),
d.date2 = $('#date2').val(),
},
columns: [
{
data: 'auditable_type',
name: 'auditable_type'
},
{
data: 'event',
name: 'event'
},
]
});
推荐阅读
- javascript - GET 重定向的 Swagger UI CORS 错误
- php - PHP 7.4 钠扩展
- font-face - 如何修复 PageSpeed 中的“确保文本在 webfont 加载 bootstrap-icons.woff 期间保持可见”错误
- tensorflow - 我正在我的 react-native 项目中实现 tensorflow camerawithtensors 但是在这里当我阅读 Image Tensor 它没有拍摄完整的图像
- azure - 使用 Azure cli/PowerShell 获取 Cosmos DB 帐户主帐户密钥/主连接字符串
- reactjs - 如何以 React json 形式制作模式依赖项以显示在一行中
- wordpress - 如何从wordpress中的用户ID数组中获取用户列表
- ms-access - 查询表达式 Microsoft Access 中的语法错误(缺少运算符)
- email - 设置外发电子邮件垃圾邮件过滤器
- numpy - Numpy - 重塑和展平阵列