简体   繁体   中英

Laravel Yajra Datatable if statement on addColumn

I've stuck with adding if statement on my addColumn statement:

$inquiries = Inquiry::with('customer')->get();

return Datatables::of($inquiries)
    ->editColumn('created_at', function ($inquiry) {
        return $inquiry->created_at->format('d-m-Y');
    })
    ->editColumn('due_date', function ($inquiry) {
        return Carbon::parse($inquiry->due_date)->format('d-m-Y');
    })
    ->editColumn('status', '@if($status == 0) Pending @elseif($status == 1) Accept @else Cancel @endif')
    ->addColumn('action', function ($inquiry) {
        return '
        <a href="/inquiries/' . $inquiry->id . '" class="btn btn-xs btn-primary"><i class="glyphicon glyphicon-edit"></i> View</a>
        <a href="/inquiries/' . $inquiry->id . '/edit" class="btn btn-xs btn-primary"><i class="glyphicon glyphicon-edit"></i> Edit</a>
        <a href="#" id="delete-button" data-id="' . $inquiry->id . '" class="btn btn-xs btn-primary"><i class="glyphicon glyphicon-edit"></i> Delete</a>
        ';
    })
    ->make(true);

I've tried to put @if @endif but it appears print it out instead of become a function

I want to show the action button based on status.

Any solution?

Thanks

Can you do something like the following?

->editColumn('status', function ($inquiry) {
    if ($inquiry->status == 0) return 'Pending';
    if ($inquiry->status == 1) return 'Accept';
    return 'Cancel';
})

Just incase, anyone still looking for :)

You can do it within your views like this in javascript after defining columns of datatables :

   "createdRow": function (row, data) {

          $('td', row).eq('COLUMN_INDEX_HERE').html($('<label>').attr({
              class:  (data.status == 0) ? 'label label-warning' : ( (data.status == 1) ? 'label label-success': 'label label-danger' )
          }).html((data.status == 0) ? 'Pending' : ( (data.status == 1) ? 'Approved': 'Canceled' )));

            }

#Simple code to be done#

->addColumn('action',function($row){
                $actionBtn='';

                if ($row->status == 'RUNNING') {
                $actionBtn.=
                ' 
                    <a class="btnEdit" href="'.route('purchase.purchaseOrderView',["id"=>$row->id]).'" >
                    <i class="fa-solid fa-money-check-pen fa-xl"></i>
                    </a>
                    &#160
                ';
                }
                
                $actionBtn.=' 
                    <a data-toggle="modal" class="viewSuppliers" id="'.$row->id.'"  data-target="#modal">
                        <i class="fa-solid fa-eye fa-xl"></i>
                    </a>
                    &#160
                    <a  class="deleteSupplier" id="'.$row->id.'">
                        <i class="fa-solid fa-trash-can-list fa-xl"></i>
                    </a>
                ';
                return $actionBtn;
            })
return Datatables::of($data)->addColumn('action' , function($data){
    $x='';
    if($data->is_public==0){
        $x.='  <button class="btn btn-inof btn-success">visible</button>';
    }if ($data->is_public==1) {
        $x.='  <button class="btn btn-inof btn-danger**strong text**"> not visible</button>';
    }
     return '
       <button class="btn btn-sm btn-circle btn-danger" 
        id="category_delete_btn" onClick="delete_category('.$data- 
          >id.')"><span class="fa fa-trash "></span></button>

       '.$x.'
     ';
})->make(true);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM