【问题标题】:Yajra DataTable: how to access row data values in addColumn( )Yajra DataTable:如何访问 addColumn() 中的行数据值
【发布时间】:2021-09-10 17:54:33
【问题描述】:

我在我的 laravel 8 应用程序中设置了一个 Yajra 数据表。我想在 addColumn() 函数的 Confirm 消息中以 $row->hl_name 的形式访问列值 hl_name,如下所示:

->addColumn('action', static function($hosp){
           $btn ='<a href="'.route('HospitalDeleteRoute', $hosp->hl_id).'" class="btn btn-danger btn-sm" onclick="onclick="return confirm('/'Are you sure you want to delete the hospital: {{'.$row->hl_name.'}})>Delete</a>';
                  return $btn;})

但是,这完全绕过了确认消息并执行删除。如果我将 $row->hl_name 更改为 $row->hl_id,消息框将成功显示相应的 Id 值。我是否需要以某种方式将数据通知到 Datatable 的行?我在控制器中显示我的数据表,如下所示:

public function index(HospitalDataTable $dataTable)
{
       return $dataTable->render('hospitals.index');
}

我没有通过脚本启动我的数据表,因为它会发出警告/错误:

// $('#hospital-table').DataTable({
//     paging: false,
//     searching: false,
//     ordering:  false,
//     lengthMenu: [[5, 10, 25, 50, 100, 500], [5, 10, 25, 50, 100, 500]],
// });

取消上面的注释会出错

DataTables 警告:table id=hospital-table - 无法重新初始化 DataTable。

dataTable成功实现,数据行随Delete动作一起显示,删除操作成功执行。但是,确认消息没有显示要删除的医院名称。 以下是我的 DataTable 类的主要 3 个功能。如果有人可以指导我,我将不胜感激。

    public function dataTable($query)
    {
       return datatables()->eloquent($query)
                        ->addIndexColumn()
                        ->addColumn('action', static function($hosp){
           $btn ='<a href="'.route('HospitalDeleteRoute', $hosp->hl_id).'" class="btn btn-danger btn-sm" onclick="onclick="return confirm('/'Are you sure you want to delete the hospital: {{'.$row->hl_name.'}})>Delete</a>';
                  return $btn;})
                        ->rawColumns(['action']);
     }

    public function query(Hospital $model)
   {
       return $model->newQuery()
                    ->join('district', function($join) {
                       $join->on('district.dt_id', '=', 'hospital.dt_id');
                    })
                    ->join('tehsil', function($join) {
                       $join->on('tehsil.teh_id', '=', 'hospital.teh_id');
                    })
                    ->select('hospital.*', 'district.dt_name', 'tehsil.teh_name');
    }

 public function html()
    {
        return $this->builder()
                    ->setTableId('hospital-table')
                    ->columns($this->getColumns())
                    ->minifiedAjax()
                    ->orderBy(1);
    }

protected function getColumns()
    {
        return [
         Column::make('DT_RowIndex')->title('S/No')->orderable(false)->searchable(false),
         Column::make('hl_name')->title('Hospital Name'),
         Column::make('teh_name')->title('Tehsil'),
         Column::make('dt_name')->title('District'),
         Column::make('Assessment_Status')->title('Assessment Status'),
         Column::computed('action')->title('Action')->exportable(false)->printable(false)->orderable(false)->searchable(false)->width(60)->addClass('text-center')
       
        ];
    }

【问题讨论】:

  • 等待帮助!

标签: laravel eloquent yajra-datatable


【解决方案1】:

结果是消息周围的逗号存在格式问题。

$btn ='<a href="'.route('HospitalDeleteRoute', $row->hl_id).'" class="btn btn-danger btn-sm" onclick="return confirm(\'Are you sure you want to delete the hospital: '.$row->hl_name.'\')">Delete</a>';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-26
    • 1970-01-01
    • 2018-03-03
    • 2020-12-26
    • 2021-08-02
    • 2018-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多