Интеграция Laravel с базой данных. net - html теги, видимые в строке - PullRequest
0 голосов
/ 26 мая 2020

Я использую этот компонент в своем проекте: yajra / laravel -datatables

У меня есть контроллер:

public function dataTable(Request $request)
    {
        if ($request->ajax()) {
            return Datatables::of($this->model->all())
                ->addIndexColumn()
                ->editColumn('enable', function ($row) {
                    if ($row->enable == 1)
                        return '<span class="label font-weight-bold label-lg  label-light-success label-inline">aktywny</span>';
                    else return '<span class="label font-weight-bold label-lg  label-light-danger label-inline">nieaktywny</span>';

                })
                ->editColumn('name', function ($row) {
                    return Str::limit($row->name, 80, '...');
                })
                ->addColumn('action', function ($row) {
                    $btn = '<a href="' . route('product.edit', ['id' => $row->id]) . '" class="removeItem"><i class="far fa-edit"></i></a> ';
                    $btn .= '<a href="' . route('product.destroy', ['id' => $row->id]) . '" class="removeItem"><i class="removeItem far fa-trash-alt"></i></a> ';

                    return $btn;
                })
                ->rawColumns(['action'])
                ->make(true);
        }
    }

и html:

 <table class="table table-bordered data-table    ">
                        <thead>
                        <tr class="resources">
                            <th>ID</th>
                            <th>Nazwa produktu</th>
                            <th>Status</th>
                            <th width="100px" class="text-center">Akcja</th>
                        </tr>
                        </thead>
                        <tbody class="data-table-center">
                        </tbody>
                    </table>
                </div>
                <div class="datatable datatable-bordered datatable-head-custom" id="kt_datatable"></div>




$(function () {
            var table = $('.data-table').DataTable({
                processing: true,
                serverSide: true,
                ajax: "{{ route('product.dataTable') }}",
                language: {
                    url: "{{ asset('js/lang/Polish.json') }}"
                },
                iDisplayLength: 50,
                render: function (data, type, row) {
                    return data;
                },
                columns: [
                    {data: 'DT_RowIndex', name: 'DT_RowIndex'},
                    // {data: 'id', name: 'id'},
                    {data: 'name', name: 'name'},
                    {data: 'enable', name: 'enable'},
                    {data: 'action', name: 'action', orderable: false, searchable: false},
                ]
            });
        });

В столбце статуса (включить) я вижу это html вместо последней строки. Как будто лезвие заменяет такое html плохо.

Мой результат:

<span class="label font-weight-bold label-lg label-light-success label-inline">aktywny</span>

Prview: https://ibb.co/6tXdH65

Как мне исправить?

1 Ответ

1 голос
/ 26 мая 2020

просто добавьте enable в свое действие в dataTable функции

 ->rawColumns(['action','enable'])
            ->make(true);
...