Уважайте проверку, не способную проверить элементы массива

Я использую встроенную проверку уважения из этого источника в своем 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();
   }

Все проверки, которые применяются для таких полей, как полное имя, адрес электронной почты, номер телефона и возраст, работают отлично. Единственная проблема связана с применением ключа itemsArray (правила проверки) к этому массиву. Он отображает сообщение об ошибке для вышеуказанных элементов, несмотря на то, что эти элементы верны в соответствии с правилом проверки v::alpha(). Также он выдает сообщение проверки 4 раза вместо трех раз. Ниже приведены выходные данные для трех элементов: яблоко, банан и вишня.

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

Я не могу отслеживать проблемы. Пожалуйста помоги !!!


person Nida Amin    schedule 11.02.2019    source источник


Ответы (1)


Вы можете добиться этого, пожалуйста, попробуйте.

->key('itemsArray', v::arrayVal()->each( v::key('itemName', v::alpha()))
person Mr.Gandhi    schedule 11.02.2019