symfony 提交表单后重新初始化自动完成

svmlkihl  于 2022-12-27  发布在  其他
关注(0)|答案(2)|浏览(130)

我有一个未绑定到任何实体的自定义autocomplete输入:

$builder
    ->add('input', TextType::class, [
        'autocomplete' => true,
        'autocomplete_url' => 'https://path-to-autocomplete',
        'tom_select_options' => [
            'create' => false,
            'preload' => true,
            'maxItems' => 1,
            'delimiter' => '/',
        ],
    ])
;

输入正确地请求自动完成URL、获取结果、呈现正确的项标签,并通过表单发送正确的项值。
在步骤#6提交表单后出现问题。
1.呈现空窗体。
1.我们选择ID为15且标签为Foo的项目。
1.输入正确呈现。
1.表单已提交。

  1. 15的值与表单一起发送到服务器。
    1.现在,我们必须使用15的输入初始值重新呈现表单。
    此时,输入值呈现为15而不是Foo,这非常合理,输入只是不知道如何获取ID为15的项的标签。

问:如何为输入提供关于项目标签的数据?
我希望它有类似reverse_autocomplete_url的东西,在输入初始化后调用它来通过它们的ID获取条目,但我不认为有这样的选项。

kgsdhlau

kgsdhlau1#

因为你用的是交响乐。
您使用了$form->isValid()等。
持久化并刷新对象。
然后调用redirectToRoute函数到当前路径,而不是重新渲染树枝。
如果你能提供更多关于你的使用情况的细节,我可以给予你一个更好的答案。

osh3o9ms

osh3o9ms2#

您必须使用options array初始化表单域:

'tom_select_options' => [
    'options' => [
        [
            'value' => 15,
            'text' => 'Foo',
        ],
    ],
],

通过valueFieldlabelField属性,valuetext密钥是customizable

相关问题