Laravel yajrabox - 如何添加呈现刀片文件的列?

时间:2021-06-11 05:06:11

标签: laravel yajra-datatable

我一直在学习这个 yajrabox 教程 https://www.tutsmake.com/laravel-8-ajax-crud-using-datatable-tutorial/

作者如何为“company-action”添加一个新列,它是一个刀片文件。

CallStatus

但这是一个有缺陷的代码,因为他刚刚为字符串“company-action”添加了一个新列。

我可以通过在 Controller 中包含 html 代码来完成这项工作,但这会使 Controller 变得臃肿。

public function index()
{
    if(request()->ajax()) {
        return datatables()->of(Company::select('*'))
        ->addColumn('action', 'company-action')
        ->rawColumns(['action'])
        ->addIndexColumn()
        ->make(true);
    }
    return view('companies');
}

如何为此刀片添加一列,company-action.blade.php?

public function index()
{
    if(request()->ajax()) {
        return datatables()->of(Company::select('*'))
        ->addColumn('action', '
        <a href="javascript:void(0)" data-toggle="tooltip" onClick="editFunc({{ $id }})" data-original-title="Edit"
            class="edit btn btn-success edit">Edit</a>
        <a href="javascript:void(0);" id="delete-compnay" onClick="deleteFunc({{ $id }})" data-toggle="tooltip"
            data-original-title="Delete" class="delete btn btn-danger">Delete
        </a>
        ')
        ->rawColumns(['action'])
        ->addIndexColumn()
        ->make(true);
    }
    return view('company.company-index');
}

1 个答案:

答案 0 :(得分:0)

我刚刚解决了。

public function index()
{   
    $query = Company::select('*');
    if(request()->ajax()) {
        return datatables()->of($query)
        ->addColumn('action', function($row){
            return view('company-action')->with("id", $row->id);
        })
        ->rawColumns(['action'])
        ->addIndexColumn()
        ->make(true);
    }
    return view('companies');
}