尊重验证无法验证数组项

Nid*_*min 0 php respect-validation php-5.6 php-7.0

我在我的 php 应用程序“ https://respect-validation.readthedocs.io/en/1.1/rules/Each/ ”中使用来自此来源的尊重内置验证。我通过 ajax 调用将数据传递给 php 应用程序代码,例如

print_r($itemsArray);

Array
(
  [0] => Array
    (
        [itemName] => apple
    )

 [1] => Array
    (
        [itemName] => banana
    )

 [2] => Array
    (
        [itemName] => cherry
    )
)
Run Code Online (Sandbox Code Playgroud)

我已将验证应用于 php 代码端的以下字段。

   $fullName = $_REQUEST['fullName'];
   $email = $_REQUEST['email'];
   $phoneNumber = $_REQUEST['phoneNumber'];
   $age = $_REQUEST['age'];
   $itemsArray = $_REQUEST['itemsArray'];

   try 
   {
      v::key('fullName', v::notEmpty()->setTemplate("Full Name: Required field"))
       ->key('fullName', v::alpha()->setTemplate("Full Name: Alphabets only"))
       ....
       ....
       ->key('itemsArray', v::arrayVal()->each(v::alpha())->setTemplate("Item must contain Alphabets"))

         ->assert(['fullName' => $fullName, 'email' => $email, 'phoneNumber' => $phoneNumber, 'age' => $age, 'itemsArray' => $itemsArray ]);    
   }
    catch(NestedValidationException $e) 
   {
      $errorMessage = $e->getMessages();
   }
Run Code Online (Sandbox Code Playgroud)

适用于全名、电子邮件、电话号码和年龄等字段的所有验证都运行良好。唯一的问题是应用于该数组的 itemsArray 键(验证规则)。尽管根据验证规则 v::alpha() 这些项目是正确的,但它会显示上述项目的错误消息。它还抛出 4 次验证消息,而不是 3 次。以下是苹果、香蕉和樱桃这三个项目的输出。

 Array
 (
    [0] => Item must contain Alphabets
    [1] => Item must contain Alphabets
    [2] => Item must contain Alphabets
    [3] => Item must contain Alphabets
 )
Run Code Online (Sandbox Code Playgroud)

我无法跟踪这些问题。请帮忙 !!!

小智 5

你可以这样实现,请尝试。

->key('itemsArray', v::arrayVal()->each( v::key('itemName', v::alpha()))
Run Code Online (Sandbox Code Playgroud)