Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用参数'实现DataTable;id';在Laravel(数据表)中?_Php_Jquery_Ajax_Laravel_Datatables - Fatal编程技术网

Php 如何使用参数'实现DataTable;id';在Laravel(数据表)中?

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

我试图将刀片文件中的ID值传递到ajax中,这样数据表将被路由,并调用
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)])}}”,因为您在这里分配了一个字符串。