Laravel Datatable 中的按钮未呈现

Posted

技术标签:

【中文标题】Laravel Datatable 中的按钮未呈现【英文标题】:Button in Laravel Datatable not rendering 【发布时间】:2018-01-25 08:18:33 【问题描述】:

我正在使用 Laravel 5.4 和 Yajra 数据表,下面是我的代码正常工作,但在我创建的第二个操作中,按钮没有显示,而是显示文本本身“<a href="/product/'. $row->id .'/create-price" class="btn btn-primary">Add Price</a>”我错过了什么?

public function getProductDatatable()
    
        $Product = Product::query();
       return Datatables::eloquent($Product)
        ->addColumn('action', function($row) 
            return '<a href="/product/'. $row->id .'/edit" class="btn btn-primary">Edit</a>';
        )

        ->addColumn('add_price', function($row) 
            return '<a href="/product/'. $row->id .'/create-price" class="btn btn-primary">Add Price</a>';
        )

       ->make(true);
    

前端部分

 <script type="text/javascript">
        $(function() 
            $('#product-table').DataTable(
                processing: true,
                serverSide: true,
                ajax: ' url('product/get_product_datatable') ',
                columns : [
                    data: 'id', name: 'id',
                    data: 'product_code', name: 'product_code',
                    data: 'action', searchable: false, orderable: false,
                    data: 'add_price', searchable: false, orderable: false,
                    data: 'created_at', name: 'created_at',
                    data: 'updated_at', name: 'updated_at'
                ]
            );
        ); 
        </script>

【问题讨论】:

如何在前端渲染视图 @meda 我已经编辑了我的问题并添加了前端js 【参考方案1】:

你需要定义rawColumns

public function getProductDatatable()
    
        $Product = Product::query();
       return Datatables::eloquent($Product)
        ->addColumn('action', function($row) 
            return '<a href="/product/'. $row->id .'/edit" class="btn btn-primary">Edit</a>';
        )

        ->addColumn('add_price', function($row) 
            return '<a href="/product/'. $row->id .'/create-price" class="btn btn-primary">Add Price</a>';
        )
       ->rawColumns(['add_price', 'action'])
       ->make(true);
    

【讨论】:

【参考方案2】:

我找到了这个issue on github,尝试添加rawColumns

 Datatables::eloquent($Product)
 ->addColumn(..)
 ->rawColumns(['add_price']);

【讨论】:

以上是关于Laravel Datatable 中的按钮未呈现的主要内容,如果未能解决你的问题,请参考以下文章

行未更新 - 对话框中的更新按钮(由 dataTable 中的按钮打开)

按钮单击事件后 DataTable 不呈现 Gridview

将变量传递给按钮 vue js laravel

jQuery DataTable 自定义按钮正则表达式列搜索

NPM Datatable Excel 按钮未显示

vuejs 组件未在我的 laravel 5.3 刀片页面中呈现