Laravel Yajra Datatables自定义按钮动作

时间:2020-01-09 11:27:16

标签: php laravel datatable datatables

我正在使用yajra/laravel-datatables-buttons,但找不到足够有用的文档来帮助我。

我正在使用包装中的创建按钮,如下所示:

enter image description here

它应该将我重定向到我的路线,即http://laravel.blog/admin/posts/create

但是它一直将我重定向到http://laravel.blog/admin/posts/creer

它将“创建”转换为“ creer”,我不知道为什么会这么做。我仅使用英语构建该应用程序,从未将法语用于路线或其他任何内容。

AdminPostsDatatable.php:

/**
     * Optional method if you want to use html builder.
     *
     * @return \Yajra\DataTables\Html\Builder
     */
    public function html()
    {
        return $this->builder()
                    ->setTableId('adminpostsdatatable-table')
                    ->columns($this->getColumns())
                    ->minifiedAjax()
                    ->dom('Bfrtip')
                    ->orderBy(1, 'desc')
                    ->buttons(
                        Button::make('create'),
                        Button::make('export'),
                        Button::make('print'),
                        Button::make('reset'),
                        Button::make('reload')
                    );
    }

admin.posts.index视图:

@extends("layouts.app")

@section('content')

    <h1>Posts</h1>
    @if (session('status'))
        <div class="alert alert-success">
            {{ session('status') }}
        </div>
    @endif
    {!! $dataTable->table() !!}
@endsection

@push('scripts')
    {!! $dataTable->scripts() !!}
@endpush

路线:

|        | GET|HEAD  | admin                         | admin.                | Closure                                                                | web,auth                                             |
|        | POST      | admin/posts                   | admin.posts.store     | App\Http\Controllers\AdminPostsController@store                        | web,auth                                             |
|        | GET|HEAD  | admin/posts                   | admin.posts.index     | App\Http\Controllers\AdminPostsController@index                        | web,auth                                             |
|        | GET|HEAD  | admin/posts/create            | admin.posts.create    | App\Http\Controllers\AdminPostsController@create                       | web,auth                                             |
|        | PUT|PATCH | admin/posts/{post}            | admin.posts.update    | App\Http\Controllers\AdminPostsController@update                       | web,auth                                             |
|        | DELETE    | admin/posts/{post}            | admin.posts.destroy   | App\Http\Controllers\AdminPostsController@destroy                      | web,auth                                             |
|        | GET|HEAD  | admin/posts/{post}/edit       | admin.posts.edit      | App\Http\Controllers\AdminPostsController@edit                         | web,auth           

谢谢。

2 个答案:

答案 0 :(得分:1)

我真的不知道这是否是正确的方法,但我提出了以下解决方案:

Button::make('create')->action("window.location = '".route('admin.posts.create')."';"),

答案 1 :(得分:1)

试试这个

         public function html()
            {
                return $this->builder()
                            ->setTableId('adminpostsdatatable-table')
                            ->columns($this->getColumns())
                            ->minifiedAjax()
                            ->dom('Bfrtip')
                            ->orderBy(1, 'desc')   
                            ->parameters([
                            'buttons'      => 
                             [
                                [
                                    'text' =>'<i class="fa fa-eye"></i> ' . 'My custom button',
                                    'className' => 'My custom class'
                                ],
                                 'csv',
                                 'excel'
                             ],
                              ]);
            }

如果你想要下拉收藏按钮

                        'buttons'      => 
                           [
                             "extend"=> 'collection',
                             "text"=> 'My Collection button',
                             "buttons" => 
                                 [ 
                                   'csv',
                                   'excel',
                                    [                
                                        [
                                           'text' =>'<i class="fa fa-eye"></i> ' . 'My custom button',
                                           'className' => 'My custom class'
                                        ],
                                     ] 
                                 ]
                           ],