当前位置: 首页 > 面试题库 >

Symfony2.4表单“此表单不应包含其他字段”错误

傅振濂
2023-03-14
问题内容

我正在尝试基于REST API Ang
AngularJS构建应用程序。我一直在关注本教程http://npmasters.com/2012/11/25/Symfony2-Rest-
FOSRestBundle.html
但是必须更改一些详细信息(折旧的方法),现在当我发布创建新实体时, “此表单不应包含其他字段”错误。

class MainController extends Controller
{
    public function indexAction(Request $request)
    {
        $form = $this->createForm(new TaskType(),null,array('action' => $this->generateUrl('post_tasks').'.json'))
                ->add('submit','submit');


        $note_form = $this->createForm(new NoteType())
                ->add('submit','submit');

        return $this->render('MyBundle:Main:index.html.twig',
                array(
                    'form'=>$form->createView(),
                    'note_form'=>$note_form->createView(),
                )
        );
    }
}

我的TaskType表格:

 public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder

            ->add('timeStart','datetime',array(
                'date_widget' => 'single_text',
                'time_widget' => 'single_text',
                'date_format' => 'yyyy-MM-dd',
                'data' => new \DateTime('now')
            ))

            ->add('timeStop','datetime',array(
                'date_widget' => 'single_text',
                'time_widget' => 'single_text',
                'date_format' => 'yyyy-MM-dd',
                'data' => new \DateTime('now')
            ))

            ->add('project')  
            ->add('descriptionTask')
            ->add('isCompleted',null,array('required' => false))  
            ->add('isVisible',null,array('required' => false))
        ;
    }

在我看来,现在我只渲染一种形式,但是 处于 测试阶段

{%extends 'MyBundle::layout.html.twig' %}

{%block content %}

<div ng-view></div>

{{ form(form) }}

{% endblock %}

并且这是应该刷新给定实体的REST控制器:

public function cpostAction(Request $request)
{
 $entity = new Task();
 $form = $this->createForm(new TaskType(), $entity);
 $form->handleRequest($request);

 if ($form->isValid()) {

     $em = $this->getDoctrine()->getManager();
     $em->persist($entity);
     $em->flush();

     return $this->redirectView(
             $this->generateUrl(
                 'get_organisation',
                 array('id' => $entity->getId())
                 ),
             Codes::HTTP_CREATED
             );
 }

 return array(
     'form' => $form,
 );
}

奇怪的事情: 当我将相同的代码从REST控制器放到MainController时,然后验证表单
并刷新新实体,但是REST控制器以某种方式抛出错误…


问题答案:

这是因为在生成表单时要添加提交按钮,而在验证它们时却没有。尝试:

public function cpostAction(Request $request)
{
    $entity = new Task();
    $form = $this->createForm(new TaskType(), $entity)->add('submit','submit');
    ...

从技术上讲,即使默认情况下,即使symfony不会将其映射到实体属性,提交按钮也是一个字段。因此,当您使用提交按钮生成表单,然后提交该表单时,您在验证控制器操作中生成的表单也需要有一个提交按钮。



 类似资料:
  • 我们正试图在我们公司建立我们自己的表单-字段-组件。我们试图这样包装材料设计的组成部分: 字段: 文本框: 用法: 这大致会导致以下结果: 但是我在控制台中得到“mat-form-field必须包含一个MatFormFieldControl”。我想这与不直接包含matInput-field的mat-form-field有关。但它包含它,它只是在ng内容投影中。 这是一场闪电战:https://st

  • 我正在处理Angular表单,我试图验证一个反应性表单。对于模板,我在项目中使用材料设计, 我在文本框中输入条件ngIf进行验证时出错 错误是-: ERROR错误:mat-form-field必须包含一个MatFormFieldControl。 请看-: 为了消除这个问题,我已经在文件2中导入了module.ts的MatInputMoules。已添加您必须将matInput添加到输入 但还是出现了

  • 我正在做一个有趣的小问题,是一个朋友寄给我的。这个问题要求我使用文本文件中的常用词填充数组,然后打印此列表中包含用户提供的某些字符的所有词。我能够填充我的数组没有问题,但是代码中实际比较两个列表的部分似乎不起作用。下面是我编写的用于比较这两个列表的函数。 代码运行得很好,我没有得到任何错误输出,但是一旦用户输入了他们的字母列表,就什么也没有发生。为了测试,我尝试了一些与我知道的单词列表中的单词相匹

  • 可以像访问页面中的其他元素一样,使用原生DOM 方法访问表单元素。此外,每个表单都有elements 属性,该属性是表单中所有表单元素(字段)的集合。这个elements 集合是一个有序列表,其中包含着表单中的所有字段,例如<input>、<textarea>、<button>和<fieldset>。每个表单字段在elements 集合中的顺序,与它们出现在标记中的顺序相同,可以按照位置和name

  • 由于PHP非常糟糕,我决定在这里发表文章作为最后的手段。我想在通过PHP联系表单发送的电子邮件的消息正文中添加一个“who”变量。该表单适用于姓名、电子邮件和消息,但“谁”的输入我想成为电子邮件消息的一部分,作为一种方式来沟通谁被转介。 我尝试添加$who=$_request['who'];和$WHO连接到邮件线路一样,但两者都不起作用,后者甚至根本不发送电子邮件。

  • 问题内容: 我有这个模特 我希望用户在两个字段中都不能使用字母数字以外的任何其他字符。 有什么办法吗? 问题答案: 您将使用验证器来限制字段接受的内容。A可以在这里实现窍门: 请注意,已经有一个验证器可以为您验证电子邮件地址。上述验证器将不允许使用有效的电子邮件地址。