awsm3/symfony-validator

对 Symfony 的请求(通常是数据,通过 Symfony 表单)进行验证

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

This package is not auto-updated.

Last update: 2024-09-29 05:43:15 UTC


README

Latest Version on Packagist Software License Total Downloads

安装

通过 Composer

$ composer require awsm3/symfony-validator

使用

请求验证类

<?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(),
            ]);
    }
}

验证请求

<?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';
    }
}

安全性

如果您发现任何与安全相关的问题,请使用问题跟踪器。

致谢

许可证

MIT 许可证(MIT)。有关更多信息,请参阅许可证文件