Ajax中的Symfony2表单验证

Pi *_* Wi 6 javascript forms ajax jquery symfony

在某些页面上,我使用bootstrap模式中的表单.我使用Ajax提交表单,并在控制器中进行验证.大多数用户将正确填写表单,但如果验证失败,表单将重新呈现并发送回用户.我根本不喜欢这个,但我找不到更好的方法,因为我无法访问字段的验证错误.有人有更好的方法来实现以JSON发回的验证错误吗?

Ver*_*era 2

如果我理解正确的话,你有一个表格,你需要分别获取每个字段的错误。如果是这样,请查看 \Symfony\Component\Form\Form::getErrorsAsString() 并执行此类操作:

function getFormErrors($form)
{
    $errors = array();

    // get the form errors
    foreach($form->getErrors() as $err)
    {
        // check if form is a root
        if($form->isRoot())
            $errors['__GLOBAL__'][] = $err->getMessage();
        else
            $errors[] = $err->getMessage();
    }

    // check if form has any children
    if($form->count() > 0)
    {
        // get errors from form child
        foreach ($form->getIterator() as $key => $child)
        {
            if($child_err = getFormErrors($child))
                $errors[$key] = $child_err;
        }
    }

    return $errors;
}
Run Code Online (Sandbox Code Playgroud)