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.
Bulk actions are defined in the :bulkActions
property when initializing the DataTable component. Each action requires a label
and a route
.
<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']
]"
/>
You need to define routes and controllers to handle bulk actions.
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');
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']);
}
}
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.