Datatables - Yajra возвращает неправильную строку - Laravel 5.8 - PullRequest
1 голос
/ 01 октября 2019

Я создаю довольно простую страницу со списком британских пабов. Их более 200 000.

Я написал простой шаблон блэйда с таблицами данных, вызываемыми ajax для маршрута в контроллере DatatablesController. Все работает хорошо, но я хочу добавить кнопки редактирования и просмотра, поэтому вот моя функция контроллера:

  public function getPubs(Request $request)
      {
        $model = Pub::query();
        return DataTables::eloquent($model)
                 ->addColumn('action', function($row){
                           $btn = '<a href="javascript:void(0)" class="edit btn btn-primary btn-sm">View</a>';
                            return $btn;
                    })
                ->addColumn('edit', function($row){
                          $editbtn = '<a href="javascript:void(0)" class="edit btn btn-primary btn-sm">edit</a>';
                           return $editbtn;
                   })
                ->make(true);
      }

Проблема в том, что столбец редактирования возвращает неверную строку. Вот конец результата ajax первого элемента:

    "action": "<a href=\"javascript:void(0)\" class=\"edit btn btn-primary btn-sm\">View</a>",
    "edit": "&lt;a href=&quot;javascript:void(0)&quot; class=&quot;edit btn btn-primary btn-sm&quot;&gt;edit&lt;/a&gt;"

Я не вижу никакой причины в моем методе, почему это не возвращается правильно.

1 Ответ

0 голосов
/ 02 октября 2019

Используйте rawColumns() метод API, чтобы запретить в Laravel DataTables кодировать сущности HTML.

Например:

return DataTables::eloquent($model)
   ->addColumn('action', function($row){
      $btn = '<a href="javascript:void(0)" class="edit btn btn-primary btn-sm">View</a>';
      return $btn;
   })
   ->addColumn('edit', function($row){
      $editbtn = '<a href="javascript:void(0)" class="edit btn btn-primary btn-sm">edit</a>';
      return $editbtn;
   })
   ->rawColumns(['action', 'edit'])
   ->make(true);
...