【问题标题】:How can I disable auto set value in Symfony form?如何在 Symfony 表单中禁用自动设置值?
【发布时间】:2021-02-16 12:23:16
【问题描述】:

我在控制器中创建了一个表单:

$form = $this->createFormBuilder()
    ->add('test', TextType::class)
    ->add('submit', SubmitType::class)
    ->getForm();

我的树枝页面中有这段代码:

{{ form(form, { 'attr': {'autocomplete': 'off'} }) }}

现在当我写一个输入值(例如“123456”)并且当我提交表单并且它无效时,页面刷新并且我的输入值显示“123456”并且当我再次刷新页面时值不会改变。

【问题讨论】:

  • 第一部分(验证失败时保留值)是非常明智的,我不明白为什么你会因为验证失败而强迫用户重新输入所有内容。第二部分(刷新)是您的浏览器缓存值。
  • @El_Vanja 因为我的字段是验证码,当无效代码被更改并且最后一个代码不起作用时
  • 啊,像验证码这样的东西会随着每个请求而变化?
  • @El_Vanja 是的,没错
  • 您可以使用 PasswordType::class 或创建自定义字段类型,每次都会重置值。

标签: php symfony symfony4 symfony-forms symfony5


【解决方案1】:

你有几种方法可以做到:

  1. 您可以创建新的表单类型并使用全局表单主题模板自定义其呈现方式
  2. 您可以以不同方式呈现特定字段
  3. 您可以尝试在渲染字段时覆盖value 属性(在某些表单主题上无法使用)

阅读symfony documentation on form themes,了解哪种解决方案更适合您的用例或应用程序。

无论如何,对于验证代码输入(如 cmets 中所述),我建议您完全实现一个新的表单类型并分别处理其呈现、选项和逻辑。

【讨论】:

    猜你喜欢
    • 2010-11-05
    • 1970-01-01
    • 1970-01-01
    • 2015-05-17
    • 2011-03-25
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    • 2020-06-27
    相关资源
    最近更新 更多