微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在LaravelDataTables中使用参数'id'实现DataTable?

如何解决如何在LaravelDataTables中使用参数'id'实现DataTable?

我正在尝试将刀片服务器文件中的ID值传递给ajax,这样它将路由数据表并在ProductActivities调用ProductController函数

这是我在show()中的ProductController函数代码段:

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');
    }
}

这是view.blade.PHP文件中用于DataTable初始化的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

web.PHP中路线的代码行:

Route::get('product/activities/{id}','Master\ProductController@ProductActivities')->name('product/activities/{id}');
{p> ProductActivities()ProductController函数代码段:
public function ProductActivities($id)
{
    $dataAct = Activity::all()->where('subject_id',$id);
    return Datatables::of($dataAct)->make(true);
}

这是我当前进度的结果:

enter image description here

在结果的屏幕截图中,ajax显示的URL在ID之后还有其他值,我认为这是导致DataTable错误的原因。

我不知道我怎么得到这个错误如何实现将ID从视图刀片文件通过DataTable ajax传递到ProductController

P.S。我为Laravel使用Yajra / DataTable包。

解决方法

我认为您在Ajax网址中不需要php echo,route helper语法是

{{ route('routeName',['id' => 1]) }}

您需要路由名称和参数,另一种方式是使用url helper

{{ url('product/activities/',[Request::segment(3)]) }}

此外,如果要使用模型,请参考documentationusing first()仅会给您一个对象,您需要一个集合,最好考虑使用get()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。