alaa/magento2-input-validation

基于Respect Validation的Magento2 Rv 输入验证

1.0.0 2018-01-06 02:00 UTC

This package is auto-updated.

Last update: 2024-09-08 12:12:12 UTC


README

基于Respect Validation

查看完整规则列表

安装

  1. 通过composer安装 composer require alaa/magento2-input-validation
  2. 启用模块 php bin/magento module:enable Alaa_RvInputValidation
  3. 升级Magento php bin/magento setup:upgrade

用法

1. 后端

在后端使用非常简单,您可以使用适合需求的任何方法

  1. validteInput: 使用单个规则验证输入。它接受两个参数,输入值作为字符串和规则作为数组。
  2. validate: 使用多个规则验证输入。它遍历规则并调用 validateInput 方法。
  3. validatePostData 和 validateGetData: 验证多个输入和每个输入的多个规则

数组规则元素包括

  1. class: 必需的类名,如 Email、NotEmpty、Between 等。这用于实例化验证规则对象
  2. args: 可选元素,用于传递到验证类构造函数中

示例


    // Initialize validation class
    public function __construct(ValidationInterface $validation)
    {
        $this->validation = $validation;
    }
    
    // valid
    $isEmail = $this->validation->validateInput('alaa.almaliki@gmail.com', ['class' => 'Email']);
    $isUrl = $this->validation->validateInput('https://google.com', ['class' => 'Url']);
    $isLegalAge = $this->validation->validateInput('22', ['class' => 'Between', 'args' => ['min' => '18', 'max' => '22']]);
    var_dump($isEmail, $isUrl, $isLegalAge);
    
    
    // invalid
    $isEmail = $this->validation->validateInput('alaa.almaliki@gmail', ['class' => 'Email']);
    $isUrl = $this->validation->validateInput('google.com', ['class' => 'Url']);
    $isLegalAge = $this->validation->validateInput('22', ['class' => 'Between', 'args' => ['min' => '18', 'max' => '20']]);
    var_dump($isEmail, $isUrl, $isLegalAge);
    
    
    // validate method work on multiple rules for each input
    $isEmail = $this->validation->validate('alaa.almaliki@gmail.com', [['class' => 'NotEmpty'], ['class' => 'Email']]);
    var_dump($isEmail);

    $validationResults = $this->validation->validatePostData(
                ['email' => 'alaa.almaliki@gmail.com', 'url' => 'https://google.com'],
                [
                    'email' => [
                        [
                            'class' => 'Email',
                            'success_message' => 'Valid Email',
                            'failure_message' => 'Not Valid Email',
                        ],
                    ],
                    'url' => [
                        [
                            'class' => 'Url',
                            'success_message' => 'Valid Url',
                            'failure_message' => 'Not Valid Url',
                        ]
                    ]
                ]
            );
    
            // results = [
            //      'email' => ['is_valid' => true|false, 'message' => 'Valid Email'|'Not Valid Email'],
            //      'url' => ['is_valid' => true|false, 'message' => 'Valid Url'|'Not Valid Url']
            // ]
            var_dump($validationResults);
    
    // this is an alias of validate post method
    // just to show that you can use multiple rules here for one input
    $emailGetResults = $this->validation->validateGetData(
        ['email' => 'alaa.almaliki@gmail.com'],
        [
            'email' => [
                [
                    'class' => 'NotEmpty',
                    'success_message' => 'Valid Email',
                    'failure_message' => 'Not Valid Email',
                ],
                [
                    'class' => 'Email',
                    'success_message' => 'Valid Email',
                    'failure_message' => 'Not Valid Email',
                ],
            ],
        ]
    );
    
    // results = ['is_valid' => true|false, 'message' => 'Valid Email'|'Not Valid Email']
    var_dump($emailGetResults);

2. 前端

在前端自定义表单中使用非常简单。如下例所示,学习如何应用验证非常直接。这里的规则可以是单个规则和单个 JSON 对象,也可以是规则数组。第一个内联方法使用验证规则数组,第二个方法在 init 脚本中使用单个 JSON 对象应用规则。

验证在每个输入点击外部区域后发生,如果验证成功,将显示基本绿色消息。如果验证失败,则将显示基本红色消息并将新类添加到标记为无效的输入值。一旦用户填写表单,提交表单时将进行验证,如果验证成功则继续,如果不成功则停止。

规则具有规则名称,即验证类,args 是可选的,name 是可选的,用于消息中。可以通过覆盖 Alaa/RvInputValidation/view/frontend/web/js/rv-input-results.js 重写验证结果

示例

<form name="test_form" id="contact-form">
    <!-- Method 1 validate inline-->
    Email: <input type="text" id="email" class="input-text required" data-mage-init='{"rv-input-validator": {"rules": [{"rule": "email"}, {"rule": "NotEmpty"}], "name": "Email"}}'>
    Age: <input type="text" id="age" class="input-text required">
    <button type="submit" title="Submit" class="action submit primary">
        <span>Submit</span>
    </button>
</form>


<!-- Method 2 validate in init script tag-->
<script type="text/x-magento-init">
    {
        "#age": {
        "rv-input-validator": {"rules": {"rule": "between", "args": {"min": 18, "max": 22}}, "name": "Age"}}
    }
</script>

贡献

请随意提出问题和贡献

许可证

MIT