To address your problem, it's generally a good idea to avoid duplicating validation rules across multiple FormRequests. Instead, you can create a base VehicleFormRequest that contains the common validation rules for the vehicles table, and then extend this base request in your specific TruckFormRequest, TrailerFormRequest, and CarFormRequest. This way, you can keep your code DRY (Don't Repeat Yourself) and maintainable.
Here's how you can achieve this:
-
Create a base
VehicleFormRequest: This request will contain the common validation rules for thevehiclestable.namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class VehicleFormRequest extends FormRequest { public function authorize() { return true; } public function rules() { return [ 'make' => 'required|string|max:255', 'model' => 'required|string|max:255', ]; } } -
Create specific FormRequests for trucks, trailers, and cars: These requests will extend the
VehicleFormRequestand add their own specific validation rules.namespace App\Http\Requests; class TruckFormRequest extends VehicleFormRequest { public function rules() { $rules = parent::rules(); $rules = array_merge($rules, [ 'emission_type' => 'required|string|max:255', 'fuel_tank_size' => 'required|integer|min:0', ]); return $rules; } }namespace App\Http\Requests; class TrailerFormRequest extends VehicleFormRequest { public function rules() { $rules = parent::rules(); $rules = array_merge($rules, [ 'emission_type' => 'required|string|max:255', 'fuel_tank_size' => 'required|integer|min:0', ]); return $rules; } }namespace App\Http\Requests; class CarFormRequest extends VehicleFormRequest { public function rules() { $rules = parent::rules(); $rules = array_merge($rules, [ 'emission_type' => 'required|string|max:255', 'fuel_tank_size' => 'required|integer|min:0', ]); return $rules; } }
By following this approach, you ensure that the common validation rules for the vehicles table are defined in one place, and any specific rules for trucks, trailers, and cars are added in their respective FormRequests. This makes your code more maintainable and easier to manage.