首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Yajrabox中添加显示数据按钮

YajraBox 是一个基于 Laravel 的数据表格封装库,它提供了丰富的功能来简化数据表格的创建和管理。要在 YajraBox 中添加一个显示数据的按钮,你可以按照以下步骤进行操作:

1. 安装 YajraBox

首先,确保你已经安装了 YajraBox。如果还没有安装,可以通过 Composer 进行安装:

代码语言:javascript
复制
composer require yajra/laravel-datatables-oracle

2. 创建数据表格

在你的 Laravel 项目中,创建一个数据表格类。例如,创建一个 UsersDataTable 类:

代码语言:javascript
复制
namespace App\DataTables;

use App\Models\User;
use Yajra\DataTables\Html\Builder;
use Yajra\DataTables\DataTables;

class UsersDataTable
{
    public function html()
    {
        return $this->builder()
                    ->addColumn(['data' => 'id', 'name' => 'id', 'title' => 'ID'])
                    ->addColumn(['data' => 'name', 'name' => 'name', 'title' => 'Name'])
                    ->addColumn(['data' => 'email', 'name' => 'email', 'title' => 'Email'])
                    ->addAction(['width' => '80px'])
                    ->parameters([
                        'dom' => 'Bfrtip',
                        'buttons' => ['excel', 'pdf', 'print'],
                    ]);
    }

    public function ajax()
    {
        return DataTables::of(User::query())
            ->addColumn('action', 'path.to.your.action.view')
            ->make(true);
    }
}

3. 添加显示数据按钮

在上面的 UsersDataTable 类中,我们已经添加了一个 addAction 方法来添加一个操作列。接下来,我们需要在控制器中使用这个数据表格类,并在视图中渲染它。

控制器

在你的控制器中,使用 UsersDataTable 类来处理数据表格请求:

代码语言:javascript
复制
namespace App\Http\Controllers;

use App\DataTables\UsersDataTable;
use Illuminate\Http\Request;

class UsersController extends Controller
{
    public function index(UsersDataTable $dataTable)
    {
        return $dataTable->render('users.index');
    }
}

视图

在你的视图文件(例如 resources/views/users/index.blade.php)中,渲染数据表格:

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Users</title>
    @yield('styles')
</head>
<body>
    <div class="container">
        <table id="users-table" class="table table-striped table-bordered">
            <thead>
                <tr>
                    <th>ID</th>
                    <th>Name</th>
                    <th>Email</th>
                    <th>Action</th>
                </tr>
            </thead>
        </table>
    </div>

    @yield('scripts')
</body>
</html>

在视图的 head 部分添加 YajraBox 的样式:

代码语言:javascript
复制
@yield('styles')
<link rel="stylesheet" href="{{ asset('vendor/datatables/buttons.dataTables.min.css') }}">
@endsection

在视图的底部添加 YajraBox 的脚本:

代码语言:javascript
复制
@yield('scripts')
<script src="{{ asset('vendor/datatables/jquery.dataTables.min.js') }}"></script>
<script src="{{ asset('vendor/datatables/buttons.server-side.js') }}"></script>
<script>
    $(function() {
        $('#users-table').DataTable({
            processing: true,
            serverSide: true,
            ajax: '{!! route('users.index') !!}',
            columns: [
                { data: 'id', name: 'id' },
                { data: 'name', name: 'name' },
                { data: 'email', name: 'email' },
                { data: 'action', name: 'action', orderable: false, searchable: false }
            ]
        });
    });
</script>
@endsection

4. 创建操作视图

创建一个操作视图文件(例如 resources/views/users/actions.blade.php),用于显示操作按钮:

代码语言:javascript
复制
@can('view', $user)
    <a href="{{ route('users.show', $user->id) }}" class="btn btn-primary btn-sm">View</a>
@endcan
@can('edit', $user)
    <a href="{{ route('users.edit', $user->id) }}" class="btn btn-warning btn-sm">Edit</a>
@endcan
@can('delete', $user)
    <form action="{{ route('users.destroy', $user->id) }}" method="POST" onsubmit="return confirm('Are you sure?');">
        @csrf
        @method('DELETE')
        <button type="submit" class="btn btn-danger btn-sm">Delete</button>
    </form>
@endcan

5. 更新控制器以传递数据

在你的 UsersController 中,更新 index 方法以传递用户数据到操作视图:

代码语言:javascript
复制
public function index(UsersDataTable $dataTable)
{
    return $dataTable->render('users.index', ['users' => User::all()]);
}
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券