尊重验证无法验证数组项

问题描述 投票:0回答:1

我使用方面内置的验证从这个来源在我的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
    )
)

我已经申请验证,以在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();
   }

所有这一切都适用于像全名,电子邮件,PHONENUMBER和年龄都完美的工作领域进行验证。唯一的问题是适用于该阵列itemsArray键(验证规则)。它显示错误消息,尽管这些项以上项目根据验证第V ::阿尔法是正确的()。此外,它抛出验证消息4倍,而不是三次。以下是这三个项目的苹果,香蕉,樱桃输出。

 Array
 (
    [0] => Item must contain Alphabets
    [1] => Item must contain Alphabets
    [2] => Item must contain Alphabets
    [3] => Item must contain Alphabets
 )

我无法追踪的问题。请帮忙 !!!

php php-5.6 php-7.0 respect-validation
1个回答
2
投票

你可以做到这样的,请尝试。

->key('itemsArray', v::arrayVal()->each( v::key('itemName', v::alpha()))
© www.soinside.com 2019 - 2024. All rights reserved.