【问题标题】:how to add action with html button in laravel datatables 8.*如何在 laravel 数据表 8.* 中使用 html 按钮添加操作
【发布时间】:2018-12-17 03:40:05
【问题描述】:

我已经在我的项目中安装了 yajra laravel,我尝试添加带有 id 的 html 按钮的操作列,我正在使用 yajra laravel,这些是我的 yajra laravel 版本:

  • “yajra/laravel-datatables-buttons”:“3.*”
  • "yajra/laravel-datatables-fractal": "1.*",
  • "yajra/laravel-datatables-html": "3.*",
  • “yajra/laravel-datatables-oracle”:“8.*”

如何添加带有数据 id 的 html 按钮的 Action 列?

这是我在 laravel 中制作数据表的数据表代码:

public function html()
    {
        $brands = Brands::select(array('brands.id','brands.name','brands.slug','brands.description','brands.logo','brands.published','brands.created_at','brands.updated_at'));
        return $this->builder()
                    ->columns($this->getColumns())
                    ->minifiedAjax()
//                    ->addAction(['width' => '80px'])
                    ->removeColumn('id')
                    ->addColumn($this->actionColumns())
                    ->parameters($this->getBuilderParameters());
    }

这是我在 laravel 中制作数据表的完整代码: https://pastebin.com/v1qYGNjb

这里是结果数据表:

我想在 Actions 列中添加按钮编辑和删除,如何使用 laravel datatables 8 做到这一点? 我正在使用 laravel 数据表作为服务。

【问题讨论】:

    标签: datatable datatables laravel-5.7


    【解决方案1】:
    public function html()
        {
            $brands = Brands::select(array('brands.id','brands.name','brands.slug','brands.description','brands.logo','brands.published','brands.created_at','brands.updated_at'));
            return $this->builder()
                        ->columns($this->getColumns())
                        ->minifiedAjax()
    //                    ->addAction(['width' => '80px'])
                        ->removeColumn('id')
                        ->addColumn('action',function ($data){
                    return $this->getActionColumn($data);
                })
                        ->parameters($this->getBuilderParameters());
        }
    
    /**
         * @param $data
         * @return string
         */
        protected function getActionColumn($data): string
        {
            $showUrl = route('admin.brands.show', $data->id);
            $editUrl = route('admin.brands.edit', $data->id);
            return "<a class='waves-effect btn btn-success' data-value='$data->id' href='$showUrl'><i class='material-icons'>visibility</i>Details</a> 
                            <a class='waves-effect btn btn-primary' data-value='$data->id' href='$editUrl'><i class='material-icons'>edit</i>Update</a>
                            <button class='waves-effect btn deepPink-bgcolor delete' data-value='$data->id' ><i class='material-icons'>delete</i>Delete</button>";
        }
    
    1. 更改您的 addColumn() 方法并遵循此代码。

    【讨论】:

      【解决方案2】:
      //UsersDataTable.php file
      
      
      class UsersDataTable  extends DataTable{
          public function dataTable( $query ){
              return datatables()
                  ->eloquent( $query )
                  ->addColumn( 'action', function( $data ){ // $data is data od current row in table 
                      return view( 'admin.users.action', [ 'data' => $data ] ); // return view with objects (row) data parameters
                      //return '<a href="#">'.$data->id.'</a>'; // or simply return html here
                  } );
          }
      
          // some of class code here
      
          protected function getColumns(){
              return [
                  Column::make( 'id' ),
                  Column::make( 'name' )->title( 'Nazwa' ),
                  Column::make( 'email' ),
                  Column::make( 'created_at' ),
                  Column::make( 'updated_at' ),
                  
                  Column::computed( 'action' )
                        ->exportable( FALSE )
                        ->printable( FALSE )
                        ->width( 60 )
                        ->addClass( 'text-center' ),
              ];
          }
          
      }
      
      
      //UsersController.php file
      
      use App\DataTables\UsersDataTable;
      class UsersController extends Controller
      {
          public function index(UsersDataTable $dataTable)
          {
              return $dataTable->render('admin.users.index');
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-13
        • 2010-11-18
        • 2021-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多