Installation
composer require dimkinthepro/http-bundle
Add to config/bundles.php (Symfony) or config/app.php (Laravel via bridge):
return [
// ...
DimkinThePro\HttpBundle\HttpBundle::class => ['all' => true],
];
Basic Usage
Register the bundle in config/packages/dimkinthepro_http.yaml (Symfony) or config/http-bundle.php (Laravel):
dimkinthepro_http:
validation:
enabled: true
First Use Case Validate an incoming request in a controller:
use DimkinThePro\HttpBundle\Validator\RequestValidator;
public function store(Request $request, RequestValidator $validator)
{
$validator->validate($request, [
'name' => 'required|string|max:255',
'email' => 'required|email',
]);
// Proceed if valid
}
Request Validation
$validator->validate($request, $rules);
config/validation_rules.php):
return [
'user.store' => [
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users',
],
];
Use in controller:
$validator->validate($request, config('validation_rules.user.store'));
Custom Validation Logic Extend the validator with custom rules:
use DimkinThePro\HttpBundle\Validator\Rules\CustomRule;
class CustomRule extends CustomRule
{
public function passes($attribute, $value)
{
return str_contains($value, 'admin');
}
}
Register in services.yaml (Symfony) or app/Providers/AppServiceProvider.php (Laravel):
$this->app->bind(CustomRule::class);
Error Handling
dimkinthepro_http:
validation:
error_format: 'api' # or 'array', 'json'
$validator->setMessages([
'required' => 'The :attribute field is mandatory!',
]);
Integration with Forms Use with Symfony Forms or Laravel Form Requests:
use DimkinThePro\HttpBundle\Validator\FormValidator;
public function create(FormValidator $formValidator)
{
$form = $this->createForm(UserType::class);
$form->handleRequest($request);
$formValidator->validate($form);
}
Rule Syntax Conflicts
unique:table,column).Caching Issues
php artisan cache:clear
Dependency Overrides
$this->app->bind(
\DimkinThePro\HttpBundle\Validator\RequestValidator::class,
fn() => new RequestValidator($this->app->make(\Illuminate\Validation\Factory::class))
);
CSRF Token Validation
$validator->validate($request, ['_token' => 'required']);
Dynamic Rule Loading Load rules from a database or API:
$rules = $this->fetchRulesFromDatabase($request->user());
$validator->validate($request, $rules);
Performance Optimization Pre-compile rules for frequent validations:
$compiledRules = $validator->compileRules($rules);
$validator->validate($request, $compiledRules);
Testing Mock the validator in tests:
$validator = $this->createMock(RequestValidator::class);
$validator->method('validate')->willReturn(true);
$this->app->instance(RequestValidator::class, $validator);
Extension Points
validation.failed events to log or transform errors.public function handle($request, Closure $next)
{
$validator = app(RequestValidator::class);
$validator->validate($request, config('validation_rules.global'));
return $next($request);
}
Debugging
dimkinthepro_http:
validation:
debug: true
try {
$validator->validate($request, $rules);
} catch (\DimkinThePro\HttpBundle\Exception\ValidationException $e) {
dd($e->getErrors()); // Dump raw errors
}
How can I help you explore Laravel packages today?