【问题标题】:Symfony 5 form not submitted when a list contains a placeholder当列表包含占位符时,Symfony 5 表单未提交
【发布时间】:2020-08-17 16:32:40
【问题描述】:

我有一个包含不同列表的表单,如下所示:

 $builder
      ->add('seatsNumber', ChoiceType::class, [
                                                        'placeholder' => 'choose.number.seats.placeholder',
                                                        'choices' => [
                                                                        '1.seat.choice' => 1,
                                                                        '2.seats.choice' => 2,
                                                                        '3.seats.choice' => 3,
                                                                        '4.seats.choice' => 4,
                                                                        '5.seats.choice' => 5,
                                                                        '6.seats.choice' => 6,
                                                                        '7.seats.choice' => 7,
                                                                        '8.seats.choice' => 8,
                                                                        '9.seats.choice' => 9,
                                                                        '10.seats.choice' => 10
                                                                     ],
                                                        'attr' => [
                                                                    'class' => 'select'
                                                                  ],
                                                        'label' => 'seats.number.label',
                                                        'multiple' => false,
                                                        'required' => true
                                                      ]
                 )

这是生成的 HTML:

<select id="vehicle_seatsNumber" name="vehicle[seatsNumber]" required="required" class="select form-control" tabindex="-1">
  <option value="" selected="selected">Choose the number of seats</option>
  <option value="1">1 seat</option>
  <option value="2">2 seats</option>
  <option value="3">3 seats</option>
  <option value="4">4 seats</option>
  <option value="5">5 seats</option>
  <option value="6">6 seats</option>
  <option value="7">7 seats</option>
  <option value="8">8 seats</option>
  <option value="9">9 seats</option>
  <option value="10">10 seats</option>
</select>

当我尝试在没有选择选项的情况下提交表单(显示占位符)时,表单没有提交,也没有显示任何消息。

【问题讨论】:

  • 请分享更多细节,以及您的调试尝试
  • 当我删除占位符时,没关系:表单已正确提交。一旦我添加了占位符属性,表单就不会在没有消息的情况下提交。
  • 您尝试过什么来调试问题?您能否分享一个触发问题的最小工作示例,以便其他人可以重现它?
  • 我没有填写表格中的字段。我按下提交按钮。表单未提交(好的,因为需要控件)但我没有错误消息。
  • 在我的控制器中,我做了这个转储:dump($form->isSubmitted());在单击提交按钮之前,结果为“假”。点击后没有新结果是因为页面没有重新加载。

标签: forms symfony placeholder choicefield


【解决方案1】:

如果你想显示验证错误,你应该考虑使用constraints

$builder->add('seatsNumber', ChoiceType::class, [ 'constraints' => [
    new NotNull(),
    new NotBlank()
] ])

【讨论】:

  • 好的,非常感谢您的关注。问题是“必需”属性的 HTML 验证不起作用。这是由于自定义选择库。我解决了将“必需”类添加到 Twig 中的选择字段表单的问题。例如:{{ form_row(form.seatsNumber, { 'attr': {'class': 'required'}}) }}。现在,当该字段未填写时,我会收到一条消息。
猜你喜欢
  • 2014-02-22
  • 2014-04-22
  • 2017-05-11
  • 2013-04-15
  • 1970-01-01
  • 1970-01-01
  • 2013-11-14
  • 1970-01-01
  • 2010-10-03
相关资源
最近更新 更多