2017-01-17 27 views
0

yajra laravel datatablesパッケージバージョン6.0を使用していますが、エクスポートボタングループを追加したいのですが、どのように実装できるかわかりません。あなたは、私はDataTableの初期化時にbuttonsオプションを使用しますが、テーブルが表示されたときに見ることができるようにエクスポートボタングループをyajraデータテーブルlaravelパッケージに追加

$('#allSubscribersTable').DataTable({ 
    processing: true, 
    serverSide: true, 
    "bSort": false, 
    "responsive": true, 
    dom: 'Bfrtip', 
    buttons: [ 
     'copy', 'csv', 'excel', 'pdf', 'print' 
    ], 
    ajax: { 
     url: '{!! route('admin.newsletterDatatable') !!}' 
    }, 
    columns: [ 
     {data: 'checkbox', "width": "20px"} 
    ] 
}); 

public function newsletterDatatable (Request $request) { 
    $subscribers = Subscriber::select(['sub_id', 'email', 'confirmed', 'created_at']); 

    $datatable = app('datatables')->of($subscribers) 
     ->orderBy('created_at', 'desc') 
     ->addColumn('checkbox', '<input type="checkbox" name="item_id[]" value="{{$sub_id}}">'); 

     return $datatable->make(true); 
    } 

そして、私が持っているJSコードで:

は、私はこのようなSubscriberControllerクラスがあるとしエクスポートボタンはありません。ドキュメント上buttons-exportページで

は、私は、コードの下に追加するべきであると言われる。しかし、私はどこでどのように私のコントローラで使用することを知らない。誰もが知っている場合は

namespace App\DataTables; 

use App\User; 
use Yajra\Datatables\Services\DataTable; 

class UsersDataTable extends DataTable { 
    //...some default stubs deleted for simplicity. 

    public function html() { 
     return $this->builder() 
        ->columns($this->getColumns()) 
        ->parameters([ 
         'buttons' => ['export'], 
        ]); 
    } 
... 

私を助けてください。

+0

DataTableボタンでエクスポートボタンを指定していない可能性があります。 – rad11

+0

@ rad11、エクスポートボタンを指定するにはどうすればよいですか? –

+0

ボタンを追加する必要があります:['copy'、 'csv'、 'excel'、 'pdf'、 'print'、 'export'] – rad11

答えて

1

クエリとビューを処理するDataTableクラスを追加します。

PHPの職人のDataTableを使用します。OrdersDataTable

がここアヤックス()、クエリ()とhtml()メソッドを利用します。次に、SubscriberControllerクラスでApp \ DataTables \ OrdersDataTableとレンダリングビューを使用します。

OrdersDataTableのサンプルコードは、

<?php 

namespace App\DataTables; 

use App\Models\Order; 

class OrdersDataTable extends DataTable 
{ 
    /** 
    * Display ajax response. 
* 
* @return \Illuminate\Http\JsonResponse 
*/ 
public function ajax() 
{ 
    return $this->datatables 
     ->eloquent($this->query()) 
     ->addColumn('action', function ($row) { 

      return '<a class="details-item" data-target="#modal-details-item" data-uri="'.url('admin/orders/'.$row->id).'" href=""><i class="fa fa-eye"></i> View Details</a> '; 

     }) 
     ->make(true); 
} 

/** 
* Get the query object to be processed by dataTables. 
* 
* @return \Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Query\Builder|\Illuminate\Support\Collection 
*/ 
public function query() 
{ 
    //$query = Order::query(); 
    $query = Order::select('orders.id', 'products.title', 'sites.name', 'orders.created_at') 
     ->orderBy('orders.created_at', 'desc') 
     ->leftJoin('products', 'products.id','=','orders.product_id') 
     ->leftJoin('sites', 'sites.id','=','orders.site_id'); 

    return $this->applyScopes($query); 
} 

/** 
* Optional method if you want to use html builder. 
* 
* @return \Yajra\Datatables\Html\Builder 
*/ 
public function html() 
{ 
    return $this->builder() 
    ->columns($this->getColumns()) 
    ->parameters([ 
     'dom' => 'Bfrtip', 
     'buttons' => ['csv', 'excel', 'print'], 
    ]); 
} 

/** 
* Get columns. 
* 
* @return array 
*/ 
protected function getColumns() 
{ 
    return [ 
     'id' => ['data' => 'id', 'name' => 'orders.id'], 
     'title' =>[ 'data' => 'title', 'name' => 'products.title'], 
     'name' => ['data' => 'name', 'name' => 'sites.name'], 
     'created_at' => ['data' => 'created_at', 'name' => 'orders.created_at'], 
     'action' => ['data' => 'action', 'name' => 'action', 'className' => "text-right", 'orderable'=> false, 'searchable' => false] 

    ]; 
} 

/** 
* Get filename for export. 
* 
* @return string 
*/ 
protected function filename() 
{ 
    return 'order_export_' . time(); 
} 
} 

そして、ちょうどビューをレンダリングして、コントローラでのクラス - 。詳細については、こちらをご確認ください。https://datatables.yajrabox.com/service

関連する問題