首页
学习
活动
专区
圈层
工具
发布

EN

Stack Overflow用户
提问于 2015-04-09 13:30:07
回答 2查看 65关注 0票数 0

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

代码语言:javascript
复制
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"

现在,当我在操作中使用以下片段时,symfony将使用给定的约束进行验证

代码语言:javascript
复制
$validator = $this->get('validator');
$errors = $validator->validate($user);

但是,如果我使用

代码语言:javascript
复制
if ($form->isValid()) {

}

return $response;

验证未完成。

但是根据的文章,Synfony在内部使用验证器服务,并另外将ConstraintViolationList对象转换为FieldErrors,这对我的目的非常方便。

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

EDIT1:

代码语言:javascript
复制
$form = $this->createForm(new RegType(), $reg); 

$reg是一个包含实体用户作为变量的对象。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-09 14:04:56

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

代码语言:javascript
复制
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => 'Core\AppBundle\Entity\User'
    ));
}
票数 1
EN

Stack Overflow用户

发布于 2015-04-09 13:32:55

你好像错过了处理请求。

代码语言:javascript
复制
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
}

看看辛弗尼最佳实践

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29539912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档