无法在yajra数据表Oracle中隐藏列

时间:2018-07-15 10:34:24

标签: laravel yajra-datatable

我正在使用yajrda datatables oracle软件包来管理datables。 我正在为数据表使用服务实现。 我面临的问题是我无法在数据表中隐藏某些列。

我想隐藏列名ID_Centro,但是没有发生。 这是该类的代码。

<?php

namespace App\DataTables;

use App\Model\Theater;
use Yajra\Datatables\Services\DataTable;

class TheaterDataTable extends DataTable
{
    /**
     * Build DataTable class.
     *
     */
    public function dataTable()
    {

        return $this->datatables
            ->eloquent($this->query())
            ->addColumn('action',function ($theater){
                if (auth()->user()->hasPermission("CinesFull")){
                    return "
        <a href=\"".route("theater.edit",$theater->ID_Centro)."\" class=\"btn btn-success \" >".trans("action.edit")."</a> ".
                        "<a  href=\"#\" onclick=\"deleteItem('$theater->ID_Centro')\" class=\"btn btn-danger\">".trans("action.delete")."</a>";
                }else{
                    return "";
                }

            });
    }

    /**
     * Get the query object to be processed by dataTables.
     *
     * @return \Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Query\Builder|\Illuminate\Support\Collection
     */
    public function query()
    {
    $query = Theater::query()->select($this->getColumns());

        return $this->applyScopes($query);
    }

    /**
     * Optional method if you want to use html builder.
     *
     * @return \Yajra\Datatables\Html\Builder
     */
    public function html()
    {
        return $this->builder()
            ->columns([
                [
                    'name'=>'ID_Centro'
                ]
            ])
            ->minifiedAjax('')
            ->addAction(['printable' => false])
            ->parameters([
                'dom'     => 'Bfrtip',
                'order'   => [[0, 'desc']],
                'buttons' => [
                    'print'
                ],
            ]);
    }

    /**
     * Get columns.
     *
     * @return array
     */
    protected function getColumns()
    {
        return [
            [
                'name'=>'ID_Centro',
                'data'=>'ID_Centro',
                'title'=>'ID_Centro'
            ]
        ];
//             return  [
//                 [
//                     "orderable" => true,
//                     "searchable" => true,
//                     "title" => "ID_Centro",
//                     "data" => "ID_Centro"
//                 ],
//                 [
//                     'name' => 'type_id',
//                     "searchable" => false,
//                     "title" => "Type",
//                     "data" => "type",
//                 ],
//                 [
//                     'name' => 'tag',
//                     "searchable" => false,
//                     "title" => "Tag",
//                     "data" => "tag",
//                     "visible" => false,
//                 ],
//             ];
//            'ID_Centro',
//            'Nombre',
//            'LocalidadCentro',
//            'ProvinciaCentro',
//            'Tlfno1',
//            'Email',
//            ];
    }

    /**
     * Get filename for export.
     *
     * @return string
     */
    protected function filename()
    {
        return 'theater_' . time();
    }
}

在实施该错误时会遇到此错误。

Exception Message:↵↵strtolower() expects parameter 1 to be string, array given"

任何人都可以帮助我解决这个问题。

2 个答案:

答案 0 :(得分:0)

https://github.com/yajra/laravel-datatables

https://yajrabox.com/docs/laravel-datatables/master/installation

https://datatables.yajrabox.com

yajratable的一些链接文档。...

尝试更改...-> addColumn

的返回

在Laravel中,在控制器中返回html并不是真正的类型。

公共函数dataTable()     {

    return $this->datatables
        ->eloquent($this->query())
        ->addColumn('action',function ($theater){
            if (auth()->user()->hasPermission("CinesFull")){
                return "
    <a href=\"".route("theater.edit",$theater->ID_Centro)."\" class=\"btn btn-success \" >".trans("action.edit")."</a> ".
                    "<a  href=\"#\" onclick=\"deleteItem('$theater->ID_Centro')\" class=\"btn btn-danger\">".trans("action.delete")."</a>";
            }else{
                return "";
            }

        });
}

答案 1 :(得分:0)

protected function getColumns() {
    return Column::computed('action')
                ->exportable(false)
                ->searchable(false)
                ->printable(false)
                ->orderable(false)
                ->visible(false)
                ->title('Delete')
    }
}