Bulk Actions in Ginkelsoft DataTables

Overview

Bulk actions in Ginkelsoft DataTables allow users to perform operations on multiple selected rows at once. This is useful for actions like deleting, exporting, or updating records in bulk.

Defining Bulk Actions

Bulk actions are defined in the :bulkActions property when initializing the DataTable component. Each action requires a label and a route.

Example

<livewire:datatable
    model="App\Models\User"
    :columns="['id', 'name', 'email', 'created_at']"
    :bulkActions="[
        'delete' => ['label' => 'Delete Selected', 'route' => 'users.bulk.delete'],
        'export' => ['label' => 'Export Selected', 'route' => 'users.bulk.export']
    ]"
/>

Handling Bulk Actions in a Controller

You need to define routes and controllers to handle bulk actions.

Route Example

use App\Http\Controllers\UserController;
use Illuminate\Support\Facades\Route;

Route::post('/users/bulk-delete', [UserController::class, 'bulkDelete'])->name('users.bulk.delete');
Route::post('/users/bulk-export', [UserController::class, 'bulkExport'])->name('users.bulk.export');

Controller Example

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\User;

class UserController extends Controller
{
    public function bulkDelete(Request $request)
    {
        $userIds = explode(',', $request->input('ids'));
        User::whereIn('id', $userIds)->delete();
        return redirect()->back()->with('success', 'Users deleted successfully');
    }

    public function bulkExport(Request $request)
    {
        $userIds = explode(',', $request->input('ids'));
        // Export logic goes here
        return response()->json(['message' => 'Export completed successfully']);
    }
}

How It Works

  1. Users select multiple rows in the DataTable.
  2. They choose a bulk action from the dropdown.
  3. The selected row IDs are sent to the specified route.
  4. The controller handles the request and performs the action.

Notes

Bulk actions use a POST request to send selected row IDs.
Ensure your route names match the ones defined in the DataTable.
Always validate user permissions before performing bulk actions.