Php 如何使用参数'实现DataTable;id';在Laravel(数据表)中?
我试图将刀片文件中的ID值传递到ajax中,这样数据表将被路由,并调用Php 如何使用参数'实现DataTable;id';在Laravel(数据表)中?,php,jquery,ajax,laravel,datatables,Php,Jquery,Ajax,Laravel,Datatables,我试图将刀片文件中的ID值传递到ajax中,这样数据表将被路由,并调用ProductController中的ProductActivities函数 以下是我在ProductController中的show()函数的代码片段: public function show($id) { $product = Product::find($id); $data = Product::with(['user_modify'], 'id', $product->user_modifie
ProductController
中的ProductActivities
函数
以下是我在ProductController
中的show()
函数的代码片段:
public function show($id)
{
$product = Product::find($id);
$data = Product::with(['user_modify'], 'id', $product->user_modified)
->where('product_id', '=', $id)->first();
$category = Category::select('category_name')
->where('category_id', '=', $data->product_type)
->pluck('category_name')
->first();
if($data->count() > 0){
return view('product.view', compact('data', 'category'));
}else{
Toastr::error('Product cannot be retrieved.', 'Error');
return view('product.index');
}
}
public function ProductActivities($id)
{
$dataAct = Activity::all()->where('subject_id', '=', $id);
return Datatables::of($dataAct)->make(true);
}
下面是view.blade.php
文件中数据表初始化的JavaScript代码片段:
@push('js')
<script>
$(function () {
$("#prod_log_tbl").DataTable({
responsive:true,
stateSave:false,
scrollY:true,
autoWidth: false,
ajax: {{ url('product/activities', [Request::segment(3)]) }},
order:[0, 'desc'],
searchable: false,
sortable:false,
fixedColumns: true
});
});
</script>
@endpush
ProductController
中的ProductActivities()
函数的代码片段:
public function show($id)
{
$product = Product::find($id);
$data = Product::with(['user_modify'], 'id', $product->user_modified)
->where('product_id', '=', $id)->first();
$category = Category::select('category_name')
->where('category_id', '=', $data->product_type)
->pluck('category_name')
->first();
if($data->count() > 0){
return view('product.view', compact('data', 'category'));
}else{
Toastr::error('Product cannot be retrieved.', 'Error');
return view('product.index');
}
}
public function ProductActivities($id)
{
$dataAct = Activity::all()->where('subject_id', '=', $id);
return Datatables::of($dataAct)->make(true);
}
以下是我目前进展的结果:
在结果的屏幕截图中,ajax显示的URL在ID之后有额外的值,我认为这是导致DataTable错误的原因
我不知道我是怎么得到这个错误的如何实现将ID从视图刀片文件通过DataTable
ajax传递到ProductController
?
另外,我在Laravel中使用Yajra/DataTable包。我认为在Ajax url中不需要php echo,语法是
{{ route('routeName', ['id' => 1]) }}
您需要路由名称和参数,另一种方法是使用
除此之外,如果您想使用模型引用,
使用first()
只会给您一个对象,您需要一个集合,最好考虑get()
Datatables接受集合,而不是模型实例,您需要使用(['user\u modify'],'id',$Product->user\u modified)使集合$data=Product::with->其中('product_id','=',$id)->get()
和这个$dataAct=Activity::where('subject_id','=',$id)->get()
在javascript:Uncaught SyntaxError:Unexpected token':'中给了我这个错误,url中的这个输出变成了:ajax:,@Taguro Unexpected token是由于一些语法错误而来的,请发布更新的代码,以及预期的url是什么让我知道。更新了查看刀片文件的代码(DataTable初始化)@Taguro看起来你需要用引号来包装你的url<代码>“{url('product/activities',[Request::segment(3)])}}”,因为您在这里分配了一个字符串。