在数据表的 addColumn () 函数中将一些变量发送到刀片视图 laravel

问题描述 投票:0回答:1

是否可以通过datatable jquery的addColumn()函数向刀片视图发送变量?

我想传递另一个变量来比较查询结果的值。 这是代码:

 if ($request->ajax()) {

           
           
            $products = Product::with('categories', 'featureds')->orderBy('name', 'ASC');
            

            $selecteds = [];
            $products_selecteds = Product::all();
            
            foreach($products_selecteds as $products_selected){
                foreach($products_selected->featureds as $featured){
                    array_push($selecteds, $products_selected->id);
                }
                
            } 
            
            

            return Datatables::of($products)->addColumn('format_price', function($product) {
                return $product->format_price;
            })->addColumn('checkbox', function ($product, $selecteds) {
           
                return view('pages.products.components.table.checkbox', ['product' => $product, 'selecteds' => $selecteds]);
                
            });
}

数组 $selecteds 它我想传递到视图复选框:

<td>
    <label>
        
        <input type="checkbox" class="checkbox-item" {{ in_array($product->id, $selecteds) ? 'checked' : "" }} value=""/> 
        <span></span>
    </label>
</td>
php laravel datatables
1个回答
2
投票

是的,可以在其他列上呈现视图。但要实现这一点,您必须将该列设置为原始列,如下所示:

Datatable::of($products)
->addColumn('selected', function($product) use($selecteds) {
    return view('product.selected', compact('product', 'selecteds'));
})
->rawColumns(['selected'])

注意: 您还需要声明

use
关键字,因为
$selecteds
在闭包之外

© www.soinside.com 2019 - 2024. All rights reserved.