Certainly! Below is a step-by-step guide on how to validate checkbox in Laravel application. Let’s assume you are working on a form that includes checkbox and you want to make sure that at least one checkbox is selected before the form is submitted.
We will take a simple example as well to understand this. Checkbox values can be 0, 1, true, false, yes and no. if we want its checked then values must be positive like 1, true and yes
.
Checkbox input is check then it gives a value but if its not checked then the key for input field is unset so we do not get in the submitted form value. So to handle this we need the accepted
rule of laravel validation library.
Validate checkbox in laravel using accepted rule
we will use here accepted rule
<?php
return Validator::make(request()->all(), [
'checkbox' =>'accepted'
]);
Let’s understand this with example
Step 1: Set up your Laravel project
If you don’t have a Laravel project set up, you can create one using Composer:
composer create-project --prefer-dist laravel/laravel checkbox-validation
cd checkbox-validation
Step 2: Create a Form
Create a form in your blade view (e.g., resources/views/checkbox-form.blade.php
) with checkbox:
<form method="post" action="{{ route('process.form') }}">
@csrf
<label for="option1">Option 1</label>
<input type="checkbox" id="option1" name="option" value="1">
<button type="submit">Submit</button>
</form>
Step 3: Create a Controller
Create a controller to handle the form submission and validation:
php artisan make:controller FormController
Edit the generated FormController.php
:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class FormController extends Controller
{
public function showForm()
{
return view('checkbox-form');
}
public function processForm(Request $request)
{
$request->validate([
'option' => 'accepted'
]);
//here we get the option value if its not set then we are setting default to 0
$valueOption = $request->get("option",'0');
// Continue processing if validation passes
return "Form submitted successfully!";
}
}
here we get the option value if its not set then we are setting default to 0
$request->get("option",'0');
Step 4: Define Routes
In your routes/web.php
, define the routes for showing the form and processing the form:
<?php
use App\Http\Controllers\FormController;
Route::get('/form', [FormController::class, 'showForm'])->name('show.form');
Route::post('/form', [FormController::class, 'processForm'])->name('process.form');
Step 5: Run the Application
Run the development server:
php artisan serve
Visit http://localhost:8000/form
in your browser to see the form. Try submitting the form with and without selecting any checkboxe. Laravel’s validation will ensure that at least one checkbox is selected.