SymfonyValidator
![Software License][ico-license]
, (*1)
Install
Via Composer, (*2)
``` bash
$ composer require awsm3/symfony-validator, (*3)
## Usage
#### Request validation class
``` php
<?php
declare(strict_types=1);
namespace App\Validator;
use Awsm3\Validator\Symfony\AbstractRequestValidator;
use Awsm3\Symfony\Validator\Field\BaseTypeFields;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\HttpFoundation\Request;
class CustomValidator extends AbstractRequestValidator
{
/**
* @param Request $request
*
* @return array
*/
public function validate($request): array
{
$formData = parent::validate($request);
return $formData;
}
/**
* Build form with validation rules
*
* @param FormBuilderInterface $formBuilder
*
* @return FormBuilderInterface
*/
protected function buildForm(FormBuilderInterface $formBuilder): FormBuilderInterface
{
return $formBuilder
// Not required 'Email' field
// @see Awsm3\Symfony\Validator\Field\BaseTypeFields for field constraints examples
->add(
'email', TextType::class, [
'constraints' => BaseTypeFields::emailConstraints(),
]);
}
}
Validate request
``` php
<?php
declare(strict_types=1);, (*4)
namespace App\Service;, (*5)
use Awsm3\Validator\Symfony\Exception\InvalidFormException;
use App\Validator\CustomValidator;
use Symfony\Component\HttpFoundation\Request;, (*6)
/**
* Class VideoCompiler
* @package App\Service
*/
class SomeService
{
/** @var CustomValidator */
private $customValidator;, (*7)
public function __construct(CustomValidator $customValidator)
{
$this->customValidator = $customValidator;
}
/**
* @param Request $request
*
* @throws InvalidFormException
* @return string
*/
public function someServiceMethod(Request $request): string
{
try {
$validatedFormData = $this->customValidator->validate($request);
} catch (InvalidFormException $e) {
throw $e;
}
return 'Request is valid';
}
}
```, (*8)
Security
If you discover any security related issues, please using the issue tracker., (*9)
Credits
License
The MIT License (MIT). Please see License File for more information., (*10)