bic/form-validation

让我们将表单验证逻辑应用于js、其他php脚本、API...

1.3.3 2014-08-06 18:30 UTC

This package is not auto-updated.

Last update: 2024-09-24 01:31:46 UTC


README

本捆绑包的目的是创建一个表单信息的抽象和通用对象,以便将其解析到其他工具(如JavaScript或PHP工具)。

例如:它可以帮助您将此信息添加到表单的JavaScript验证逻辑中。

##依赖项

检查当前版本的composer.json。

##安装

####Composer

composer require bic/form-validation

####启用捆绑包

//...
new Bic\FormValidationBundle\BicFormValidationBundle()
//...

##工作原理

####创建表单

        // form Data models
        $formData = array(
            new Form\Model\Register(),
            new Form\Model\Document()
        );

        // form builder
        $formBuilder = $this->container
                ->get('form.factory')
                ->createNamedBuilder('form', 'form', $formData)
                ->add('phone', 'text')
                ->add('password', 'password')
                ->add('document', new Form\Type\DocumentType())
                ->add('submit', 'submit');

        // get form from form builder
        // (http://www.interesarte.com/wp-content/uploads/2013/05/willsmith.jpg)
        $form = $formBuilder
                ->getForm()
                ->handleRequest($request);

####提取验证

        $formValidation = $this->get('bic_form_validation.form_validation');
        //returns FormValidation object
        $formValidation->extractValidation($form);
        //returns fields array
        $formValidation->getFields();
        //returns json object
        $formJson = $formValidation->toJson();

####将其返回到视图

        return array(
            //...
            'form_validation' => $formJson,
            //...
        );

然后您可以随意使用它。

##json表单示例

[
    {
        constraints: [ 
            "Default": [
                {
                    "message": "This value should not be null.",
                    "groups": [
                        "Default",
                        "Model"
                    ],
                    "class": "Symfony\\Component\\Validator\\Constraints\\NotNull"
                }
            ]
        ],
        dataClass: "Bic\Voucher\EntityBundle\Entity\Category",
        options: {
            choices: {
                m: "Male",
                f: "Female"
            },
            required: false,
            empty_value: "Choose your gender",
            empty_data: null
        },
        value: '',
        pathName: [
            "name",
            "bic_voucher_entitybundle_category"
        ],
        fullPathName: "bic_voucher_entitybundle_category[name]",
        type: "choice",
        validationGroups: [ ]
    },
    {
    constraints: [ ],
        dataClass: "Bic\Voucher\EntityBundle\Entity\Category",
        options: {
            required: false
        },
        value: '',
        pathName: [
            "miniDescription",
            "bic_voucher_entitybundle_category"
        ],
        fullPathName: "bic_voucher_entitybundle_category[miniDescription]",
        type: "textarea",
        validationGroups: [ ]
    }
]

完整示例

##最后更改

  • 添加了来自FormView对象的实体结果(dataEntityChoice属性)
  • 添加了JMS Serializer作为依赖项,以获取实体类型值并将其解析为JSON
  • 添加了value属性。它包含字段的值。
  • 移除了从传递的数据中获取类名的可能性
  • 提供更好的和完整的JSON示例(来自TODO)
  • 创建关联的js解析器,如ParsleyJs和js表单生成脚本。(项目外)(来自TODO)
  • FIXED - 不适用于复杂表单。(来自已知错误)
  • 更多单元测试(来自TODO)
  • 添加了表单的通用信息
  • 创建了第一个单元测试,以检查捆绑包是否与复杂表单一起工作
  • 修复已知错误(来自TODO)
  • 父表单未避免
  • 提交按钮未避免
  • 添加了更多表单信息
  • 移除了jQValidation生成器
  • 移除了生成器文件夹和策略。现在解析器将外部应用。

##相关资源

###Js表单创建器 它根据json信息创建表单。https://github.com/bichotll/Symfony-FormValidationBundle-js-parser

###Js ParsleyJS解析器 它将ParsleyJS验证应用于从Symfony-FormValidationBundle-js-parser表单对象或现有对象中获取的表单对象,或使用FormValidationBundle对象 https://github.com/bichotll/Symfony-FormValidationBundle-ParsleyJS-parser

##Wiki

如何测试 完整示例

##TODO

  • 适当的单元测试。直到下一个更改,我将不会以程序方式检查响应。
  • 使用容器等的模拟进行单元测试。
  • 测试实体类型。