Symfony Validating Froms


Symfony Validating Froms

我有一个symfony表单。现在,我计划实现验证,为此我编写了一个validation.yml文件,如下所示

Core'AppBundle'Entity'User:
    properties:
        name:
            - Length:
                min: 5
                max: 255
                minMessage: "Your name should be at least {{ limit }} characters"
                maxMessage: "Your name cannot be more than {{ limit }} characters"

现在,当我在Action 中使用以下代码段时,symfony使用给定的约束进行验证

$validator = $this->get('validator');
$errors = $validator->validate($user);

但是,如果我使用

if ($form->isValid()) {
}
return $response;

验证未完成。

但根据本文,Synfony在内部使用验证器服务,并将ConstraintViolationList对象转换为FieldErrors,这对我来说非常方便。

我的工作流程中可能有什么错误?

第1版:

$form = $this->createForm(new RegType(), $reg); 

$reg是包含实体User作为变量的对象。

RegType的默认选项中是否将data_class设置为Core''AppBundle''Entity''User?这就是表单确定是否需要进行额外验证的方式。

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => 'Core'AppBundle'Entity'User'
    ));
}

您似乎错过了句柄请求。

public function newAction(Request $request)
{
    // build the form ...
    $form->handleRequest($request);
    if ($form->isSubmitted() && $form->isValid()) {
        $em = $this->getDoctrine()->getManager();
        $em->persist($post);
        $em->flush();
        return $this->redirect($this->generateUrl(
            'admin_post_show',
            array('id' => $post->getId())
        ));
    }
    // render the template
}

看看符号的最佳实践