首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symfony6 -在提交表单后添加iput字段

Symfony6 -在提交表单后添加iput字段
EN

Stack Overflow用户
提问于 2022-07-04 11:58:06
回答 2查看 61关注 0票数 -1

我在表单中有一个ChoiceType::class输入字段,现在作为一个例子,有两个选项:‘=> 'type1’=> '1','type2‘=> '2’

现在,当用户选择type2时,我希望向表单中添加一个exta::class输入字段。但是我不想在此之前显示输入字段,如果选择了type2,而不是选择了type1,我希望输入字段是必需的。

我希望这是有意义的,我尝试使用javascript并将属性设置为隐藏或不隐藏,但是由于所需的属性,表单没有发送。

我尝试了表单事件,但没有让它以那样的方式工作。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-04 12:05:20

你在正确的道路上,你必须在Javascript中这样做。您只需要管理Javascript中所需的attr,这样表单就不会像这样阻止您:

从字段中移除所需的属性:document.getElementById("id").required = false;

  • Make:document.getElementById("id").required = true;

您可以检查表单是否可以与:document.getElementById("idForm").reportValidity();相加。

票数 0
EN

Stack Overflow用户

发布于 2022-07-06 13:53:59

I使用具有数据属性的条件字段的实现,例如:

代码语言:javascript
复制
->add('typeField', EnumType::class, [
  'label' => 'Type',
  'class' => MyTypeEnum::Class,
])
->add('someField', TextField::class, [
  'data-controller' => 'depends-on',
  'data-depends-on' => 'my_form_typeField',
  'data-depends-value' => MyTypeEnum::OTHER->value,
])

在前端,JS刺激控制器显示/隐藏someField依赖于typeField值。object中的object()函数(formType中的‘formType’)进行自定义验证,例如:

代码语言:javascript
复制
/**
 * @Assert\Callback
 */
public function validate(ExecutionContextInterface $context)
{
  if ($this->typeField !== MyTypeEnum::OTHER) {
    $context->buildViolation('message')->atPath('typeField')->addViolation();
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72856334

复制
相关文章

相似问题

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