Соблюдайте валидацию, не в состоянии проверить элементы массива
Я пользуюсь уважением, встроенным в валидацию из этого источника в моем 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
)
Я не могу отслеживать проблемы. Пожалуйста помоги!!!
1 ответ
Вы можете достичь, как это, пожалуйста, попробуйте.
->key('itemsArray', v::arrayVal()->each( v::key('itemName', v::alpha()))