【发布时间】:2021-11-28 06:29:28
【问题描述】:
我正在使用以下简单的控制器函数来创建一个表单:
$json = json_decode(file_get_contents('../data/sample.json'));
public function index(Request $request): Response
{
$form = $this->createFormBuilder();
$form->add('city', ChoiceType::class, [
'choices' => $json[0]->options,
'label' => $json[0]->label,
]);
$form->add('submit', SubmitType::class, [
'attr' => [
'class' => 'btn btn-primary'
],
]);
$form->add('next', SubmitType::class, [
'attr' => [
'class' => 'btn btn-warning',
'disabled' => true
]
]);
$form = $form->getForm();
.
.
.
return $this->render('quiz/index.html.twig', [
'form' => $form->createView(),
]);
}
数据是从以下相同的 json 文件中读取的:
[
{
"options" : ["Lisbon", "London", "Los Angels"],
"label" : "Please select your <u>city</u> of residence"
}
]
每个标签中都有一些 HTML 标签,但所有这些标签都没有被处理。所以上面的例子在我的浏览器中显示的和代码中看到的完全一样。
在我的 twig 模板中,我已经单独尝试了以下每一项:
{{ form(form) }}
{{ form(form) | raw }}
{{ form(form) | convert_encoding('UTF-8', 'iso-2022-jp') }}
{{ form(form) | convert_encoding('UTF-8', 'HTML-ENTITIES') }}
{% autoescape false %}
{{ form(form) | convert_encoding('UTF-8', 'HTML-ENTITIES') }}
{% endautoescape %}
{{ form(form) | striptags('<u><input><p><select><option><br><b><button>') }}
{{ form(form) | striptags('<u><input><p><select><option><br><b><button>') | raw }}
尽管我在网上找到了所有这些建议,但我的表单标签仍然显示未处理的 HTML 标记。
一个潜在的复杂情况是我使用{{ form(form) }} 将整个表单打印为一个整体。然而,由于表单是从 JSON 数据动态组合而成的,因此实际上不可能分段打印表单,因为可以随时添加或删除 JSON 数据。
【问题讨论】: