加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 用于AJAX提交表单的Symfony2控制器中的访问错误

发布时间:2020-12-13 14:05:03 所属栏目:PHP教程 来源:网络整理
导读:问题1 我想通过ajax提交建立一个注册表.注册工作是$form- isValid().但是,如果表单注册失败,我需要通过ajax返回这些错误. if ($form-isValid()) {}else{ $errors = $form-getErrors(); // return some json encoded errors here} $form- getErrors()返回一个
问题1

我想通过ajax提交建立一个注册表.注册工作是$form-> isValid().但是,如果表单注册失败,我需要通过ajax返回这些错误.

if ($form->isValid()) {

}else{
    $errors = $form->getErrors();
    // return some json encoded errors here
}

$form-> getErrors()返回一个空数组,即使表单没有验证(在这种情况下我用一个太短的用户名进行测试).

问题2

我遇到的第二个问题是,如果表单验证但仍有错误.例如,某人尝试为其提交相同值的唯一字段.

if ($form->isValid()) {

    $em = $this->getDoctrine()->getEntityManager();
    $em->persist($form->getData());
    $em->flush();

    // error could be a username submitted more than once,username is unique field

}else{
    // ...
}

如何捕获该错误并通过json返回?

问题1

在表单构建器中,您可以使用error_bubbling将错误移动到表单对象中.指定字段时,将其作为选项传递,如下所示:

$builder->add('username','text',array('error_bubbling'=>true));

并且您可以像这样访问表单对象中的错误:

$form->getErrors();

输出类似的东西

array (
  0 => 
  SymfonyComponentFormFormError::__set_state(array(
     'messageTemplate' => 'Your username must have at least {{ limit }} characters.','messageParameters' => 
    array (
      '{{ value }}' => '1','{{ limit }}' => 2,),)),) [] []

fyi:如果您使用的是Form / Type,则无法将error_bubbling设置为默认值,必须将其分配给每个字段.

有用链接:http://symfony.com/doc/2.0/reference/forms/types/text.html#error-bubbling

问题2

http://symfony.com/doc/2.0/reference/constraints/UniqueEntity.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读