我使用方面内置的验证从这个来源在我的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
)
我无法追踪的问题。请帮忙 !!!
你可以做到这样的,请尝试。
->key('itemsArray', v::arrayVal()->each( v::key('itemName', v::alpha()))