Validation 尊重\验证\验证程序-捕获错误时使用数组

Validation 尊重\验证\验证程序-捕获错误时使用数组,validation,fat-free-framework,respect-validation,Validation,Fat Free Framework,Respect Validation,我试图利用开源PHP类捕捉错误。我用他们的例子创建了一个检查数组。尽管这似乎可以正常工作,但我随后尝试捕获任何错误消息,以便向用户显示它。我没有看到任何方法可以作为完整的数组(检查所有内容,将所有消息存储在一个数组中)。因此,我尝试在Validator中使用check方法循环 这是类方法的内部,使用F3(无脂肪)框架 我最终出现以下错误: 无法将类型为尊重\验证\验证程序的对象用作数组 代码如下。在这里使用数组执行此任务的正确方法是什么?谢谢你的帮助 $registerValidator =

我试图利用开源PHP类捕捉错误。我用他们的例子创建了一个检查数组。尽管这似乎可以正常工作,但我随后尝试捕获任何错误消息,以便向用户显示它。我没有看到任何方法可以作为完整的数组(检查所有内容,将所有消息存储在一个数组中)。因此,我尝试在Validator中使用check方法循环

这是类方法的内部,使用F3(无脂肪)框架

我最终出现以下错误:

无法将类型为尊重\验证\验证程序的对象用作数组

代码如下。在这里使用数组执行此任务的正确方法是什么?谢谢你的帮助

$registerValidator = 
    Respect\Validation\Validator::attribute('email', Respect\Validation\Validator::email()->length(1,null)->notEmpty())
        ->attribute('address', Respect\Validation\Validator::stringType()->length(3,null)->notEmpty())
        ->attribute('city', Respect\Validation\Validator::alpha()->length(2,60)->notEmpty())
        ->attribute('state', Respect\Validation\Validator::alpha()->length(2,2)->notEmpty())
        ->attribute('zip', Respect\Validation\Validator::intType()->length(5,5)->notEmpty());
    
foreach($this->f3->get('POST') as $key => $value){
    try{
        $registerValidator[$key]->check($value);
    } catch (\InvalidArgumentException $e) {
        $errors = $e->getMainMessage();
        $this->userMessage($errors, 'warning');
        $this->f3->reroute('/register');
    }
}
我还尝试使用他们文档中的assert方法,但利用以下更改,我在500服务器内部错误中得到了一个不同的错误,而不是看到我的回音:

try{
    $registerValidator->assert($this->f3->get('POST'));
} catch (Respect\Validation\Validator\NestedValidationException $e) {
    $errors = $e->getMessages();
    echo($errors); // I can't even get here.
    foreach($errors as $error){
        $this->userMessage($error, 'warning');
    }
    $this->f3->reroute('/register');
}
由于这500个错误,而不是看到我的回声,因此页面完全停止加载

所有必需的规则都必须通过


您不能像在
$registerValidator[$key]->check($value)
上那样,将
验证程序
类真正用作数组。
$registerValidator
变量中的对象包含验证输入的规则链

在您的例子中,我相信输入是来自
POST
的数组,因此首先您应该使用验证器,而不是

然而,您无法捕获错误的真正原因是因为您的
catch
语句中有一个输入错误,类名应该是
尊敬\Validation\Exceptions\NestedValidationException
,而不是
尊敬\Validation\Validator\NestedValidationException