Laravel Yajra Datatables 自定义按钮操作

Posted

技术标签:

【中文标题】Laravel Yajra Datatables 自定义按钮操作【英文标题】:Laravel Yajra Datatables custom button action 【发布时间】:2020-04-26 23:58:09 【问题描述】:

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

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

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

但它不断将我重定向到http://laravel.blog/admin/posts/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           

提前致谢。

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案2】:

试试这个

         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'
                                        ],
                                     ] 
                                 ]
                           ],

【讨论】:

以上是关于Laravel Yajra Datatables 自定义按钮操作的主要内容,如果未能解决你的问题,请参考以下文章

yajra / laravel-datatables搜索不适用于laravel 5.4

Laravel Yajra Datatables 自定义按钮操作

如何将数据库索引与 Datatables 和 yajra/laravel-datatables 一起使用

Laravel - Yajra Datatables 异常消息:试图获取非对象的属性

用 Laravel/Eloquent 为 Yajra DataTables 编写连接查询的慢 MySQL

方法 Yajra\DataTables\CollectionDataTable::where 不存在