awsm3/symfony-validator

Валидация реквестов (вообще, данных, посредством форм Symfony) для Symfony

dev-master 2018-03-23 23:22 UTC

This package is not auto-updated.

Last update: 2024-05-12 03:12:04 UTC


README

Latest Version on Packagist Software License Total Downloads

Install

Via Composer

$ composer require awsm3/symfony-validator

Usage

Request validation class

<?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
declare(strict_types=1);
 
namespace App\Service;
 
use Awsm3\Validator\Symfony\Exception\InvalidFormException;
use App\Validator\CustomValidator;
use Symfony\Component\HttpFoundation\Request;
 
/**
 * Class VideoCompiler
 * @package App\Service
 */
class SomeService
{
    /** @var CustomValidator */
    private $customValidator;
 
    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';
    }
}

Security

If you discover any security related issues, please using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.