वैद्य

composer में कई वैद्य हैं जिन्हें सीधे उपयोग किया जा सकता है, जैसे:

top-think/think-validate

respect/validation

वैद्य top-think/think-validate

विवरण

ThinkPHP का आधिकारिक वैद्य

परियोजना का पता

https://github.com/top-think/think-validate

स्थापना

composer require topthink/think-validate

त्वरित शुरुआत

नई फ़ाइल बनाएँ app/index/validate/User.php

<?php
namespace app\index\validate;

use think\Validate;

class User extends Validate
{
    protected $rule =   [
        'name'  => 'require|max:25',
        'age'   => 'number|between:1,120',
        'email' => 'email',    
    ];

    protected $message  =   [
        'name.require' => 'नाम आवश्यक है',
        'name.max'     => 'नाम में अधिकतम 25 अक्षर हो सकते हैं',
        'age.number'   => 'उम्र संख्या होनी चाहिए',
        'age.between'  => 'उम्र केवल 1-120 के बीच हो सकती है',
        'email'        => 'ईमेल प्रारूप गलत है',    
    ];

}

उपयोग

$data = [
    'name'  => 'thinkphp',
    'email' => 'thinkphp@qq.com',
];

$validate = new \app\index\validate\User;

if (!$validate->check($data)) {
    var_dump($validate->getError());
}

ध्यान दें
webman में think-validate का Validate::rule() विधि समर्थित नहीं है

वैद्य workerman/validation

विवरण

परियोजना https://github.com/Respect/Validation का हिंदी अनुवादित संस्करण है

परियोजना का पता

https://github.com/walkor/validation

स्थापना

composer require workerman/validation

त्वरित शुरुआत

<?php
namespace app\controller;

use support\Request;
use Respect\Validation\Validator as v;
use support\Db;

class IndexController
{
    public function index(Request $request)
    {
        $data = v::input($request->post(), [
            'nickname' => v::length(1, 64)->setName('उपनाम'),
            'username' => v::alnum()->length(5, 64)->setName('उपयोगकर्ता नाम'),
            'password' => v::length(5, 64)->setName('पासवर्ड')
        ]);
        Db::table('user')->insert($data);
        return json(['code' => 0, 'msg' => 'ठीक है']);
    }
}  

jquery के माध्यम से एक्सेस करें

  $.ajax({
      url : 'http://127.0.0.1:8787',
      type : "post",
      dataType:'json',
      data : {nickname:'汤姆', username:'tom cat', password: '123456'}
  });

परिणाम प्राप्त करें:

{"code":500,"msg":"उपयोगकर्ता नाम केवल अक्षरों (a-z) और अंकों (0-9) को शामिल कर सकता है"}

व्याख्या:

v::input(array $input, array $rules) डेटा को मान्य करते समय और इकट्ठा करने के लिए उपयोग किया जाता है, यदि डेटा वैधता विफल होती है, तो Respect\Validation\Exceptions\ValidationException अपवाद फेंका जाएगा, यदि मान्यता सफल होती है तो मान्य डेटा (ऐरे) लौटाया जाएगा।

यदि व्यावसायिक कोड वैधता अपवाद को पकड़ने में असमर्थ हैं, तो webman ढांचा स्वचालित रूप से इसे कैच करेगा और HTTP अनुरोध शीर्षक के आधार पर json डेटा (जैसे {"code":500, "msg":"xxx"}) या सामान्य अपवाद पृष्ठ लौटाएगा। यदि लौटने का प्रारूप व्यावसायिक आवश्यकताओं के अनुरूप नहीं है, तो डेवलपर ValidationException अपवाद को पकड़ सकता है और आवश्यक डेटा लौटा सकता है, नीचे दिए गए उदाहरण की तरह:

<?php
namespace app\controller;

use support\Request;
use Respect\Validation\Validator as v;
use Respect\Validation\Exceptions\ValidationException;

class IndexController
{
    public function index(Request $request)
    {
        try {
            $data = v::input($request->post(), [
                'username' => v::alnum()->length(5, 64)->setName('उपयोगकर्ता नाम'),
                'password' => v::length(5, 64)->setName('पासवर्ड')
            ]);
        } catch (ValidationException $e) {
            return json(['code' => 500, 'msg' => $e->getMessage()]);
        }
        return json(['code' => 0, 'msg' => 'ठीक है', 'data' => $data]);
    }
}

Validator कार्यक्षमता मार्गदर्शिका

use Respect\Validation\Validator as v;

// एकल नियम वैधता
$number = 123;
v::numericVal()->validate($number); // true

// कई नियम श्रृंखलाबद्ध वैधता
$usernameValidator = v::alnum()->noWhitespace()->length(1, 15);
$usernameValidator->validate('alganet'); // true

// पहले वैधता विफलता के कारण को प्राप्त करें
try {
    $usernameValidator->setName('उपयोगकर्ता नाम')->check('alg  anet');
} catch (ValidationException $exception) {
    echo $exception->getMessage(); // उपयोगकर्ता नाम केवल अक्षरों (a-z) और अंकों (0-9) को शामिल कर सकता है
}

// सभी वैधता विफलता के कारणों को प्राप्त करें
try {
    $usernameValidator->setName('उपयोगकर्ता नाम')->assert('alg  anet');
} catch (ValidationException $exception) {
    echo $exception->getFullMessage();
    // प्रिंट होगा
    // -  उपयोगकर्ता नाम निम्नलिखित नियमों का पालन करना चाहिए
    //     - उपयोगकर्ता नाम केवल अक्षरों (a-z) और अंकों (0-9) को शामिल कर सकता है
    //     - उपयोगकर्ता नाम सफेद स्थान नहीं हो सकता

    var_export($exception->getMessages());
    // प्रिंट होगा
    // array (
    //   'alnum' => 'उपयोगकर्ता नाम केवल अक्षरों (a-z) और अंकों (0-9) को शामिल कर सकता है',
    //   'noWhitespace' => 'उपयोगकर्ता नाम सफेद स्थान नहीं हो सकता',
    // )
}

// कस्टम त्रुटि संदेश प्रदान करें
try {
    $usernameValidator->setName('उपयोगकर्ता नाम')->assert('alg  anet');
} catch (ValidationException $exception) {
    var_export($exception->getMessages([
        'alnum' => 'उपयोगकर्ता नाम केवल अक्षरों और अंकों को शामिल कर सकता है',
        'noWhitespace' => 'उपयोगकर्ता नाम में कोई सफेद स्थान नहीं होना चाहिए',
        'length' => 'length नियमों का पालन करता है, इसलिए यह संदेश नहीं दिखेगा'
    ]));
    // प्रिंट होगा 
    // array(
    //    'alnum' => 'उपयोगकर्ता नाम केवल अक्षरों और अंकों को शामिल कर सकता है',
    //    'noWhitespace' => 'उपयोगकर्ता नाम में कोई सफेद स्थान नहीं होना चाहिए'
    // )
}

// वस्तु वैधता
$user = new stdClass;
$user->name = 'Alexandre';
$user->birthdate = '1987-07-01';
$userValidator = v::attribute('name', v::stringType()->length(1, 32))
                ->attribute('birthdate', v::date()->minAge(18));
$userValidator->validate($user); // true

// ऐरे वैधता
$data = [
    'parentKey' => [
        'field1' => 'value1',
        'field2' => 'value2',
        'field3' => true,
    ]
];
v::key(
    'parentKey',
    v::key('field1', v::stringType())
        ->key('field2', v::stringType())
        ->key('field3', v::boolType())
    )
    ->assert($data); // check() या validate() का भी उपयोग कर सकते हैं

// वैकल्पिक वैधता
v::alpha()->validate(''); // false 
v::alpha()->validate(null); // false 
v::optional(v::alpha())->validate(''); // true
v::optional(v::alpha())->validate(null); // true

// नकारात्मक नियम
v::not(v::intVal())->validate(10); // false

Validator तीन विधियों validate() check() assert() के बीच अंतर

validate() बूलियन लौटाती है, अपवाद नहीं फेंकती

check() वैधता विफल होने पर अपवाद फेंकती है, $exception->getMessage() द्वारा पहले वैधता विफलता का कारण प्राप्त किया जा सकता है

assert() वैधता विफल होने पर अपवाद फेंकती है, $exception->getFullMessage() द्वारा सभी वैधता विफलता के कारणों को प्राप्त किया जा सकता है

सामान्य उपयोग किए जाने वाले वैधता नियमों की सूची

Alnum() केवल अक्षरों और अंकों को शामिल करता है

Alpha() केवल अक्षरों को शामिल करता है

ArrayType() ऐरे प्रकार

Between(mixed $minimum, mixed $maximum) मान्य करता है कि इनपुट अन्य दो मानों के बीच है।

BoolType() यह सुनिश्चित करता है कि यह बूलियन है

Contains(mixed $expectedValue) यह सुनिश्चित करता है कि इनपुट में कुछ मान है

ContainsAny(array $needles) यह सुनिश्चित करता है कि इनपुट में कम से कम एक परिभाषित मान है

Digit() यह सुनिश्चित करता है कि इनपुट में केवल अंक हैं

Domain() यह सुनिश्चित करता है कि यह वैध डोमेन है

Email() यह सुनिश्चित करता है कि यह वैध ईमेल पता है

Extension(string $extension) यह सुनिश्चित करता है कि ठेकेदार का सही रूप है

FloatType() यह सुनिश्चित करता है कि यह फ्लोटिंग पॉइंट है

IntType() यह सुनिश्चित करता है कि यह पूर्णांक है

Ip() यह सुनिश्चित करता है कि यह ip पता है

Json() यह सुनिश्चित करता है कि यह json डेटा है

Length(int $min, int $max) यह सुनिश्चित करता है कि लंबाई दिए गए सीमा के भीतर है

LessThan(mixed $compareTo) यह सुनिश्चित करता है कि लंबाई दिए गए मान से कम है

Lowercase() यह सुनिश्चित करता है कि यह छोटे अक्षर हैं

MacAddress() यह सुनिश्चित करता है कि यह mac पता है

NotEmpty() यह सुनिश्चित करता है कि यह खाली नहीं है

NullType() यह सुनिश्चित करता है कि यह null है

Number() यह सुनिश्चित करता है कि यह संख्या है

ObjectType() यह सुनिश्चित करता है कि यह वस्तु है

StringType() यह सुनिश्चित करता है कि यह स्ट्रिंग प्रकार है

Url() यह सुनिश्चित करता है कि यह url है

अधिक वैधता नियमों के लिए देखें https://respect-validation.readthedocs.io/en/2.0/list-of-rules/

अधिक सामग्री

आगंतुक करें https://respect-validation.readthedocs.io/en/2.0/