symfony - Symfony - 通过引用访问表单名称
问题描述
我有一个包含许多问题的表格。它们不绑定到实体,因此在表单类型类中动态生成
class QuestionnaireType extends AbstractType
{
private $questions = [
0 => 'Question 1',
1 => 'Question 2',
2 => 'Question 3',
];
public function buildForm(FormBuilderInterface $builder, array $options)
{
foreach ($this->questions as $key => $val) {
$builder->add($key, ChoiceType::class, [
'choices' => [
1 => 'Yes',
2 => 'No',
]
]);
}
}
}
我想循环访问我的树枝模板中的这些表单元素。我尝试了以下方法,但它不起作用:
{% block content %}
{{ form_start(form) }}
{{ form_errors(form) }}
{% for i in 0..2 %}
{{ form_label(form.i) }}
{{ form_widget(form.i) }}
{% endfor %}
{{ form_end(form) }}
{% endblock %}
是否可以从树枝模板中通过引用访问表单元素?
解决方案
form.i
不起作用,因为您没有名为 的表单字段i
,并且当通过 访问数组或对象属性时foo.bar
,Twig 不会尝试将其解释bar
为变量。
这就是说,您还可以通过语法访问数组键和对象属性foo[bar]
wherebar
将始终被解释为变量,然后 wherefoo['bar']
将等效于foo.bar
.
所以在你的情况下,form[i]
.
所以这应该适用于你的情况:
{% block content %}
{{ form_start(form) }}
{{ form_errors(form) }}
{% for i in 0..2 %}
{{ form_label(form[i]) }}
{{ form_widget(form[i]) }}
{% endfor %}
{{ form_end(form) }}
{% endblock %}
另一种解决方案是使用该attribute
功能:
{% block content %}
{{ form_start(form) }}
{{ form_errors(form) }}
{% for i in 0..2 %}
{{ form_label(attribute(form, i)) }}
{{ form_widget(attribute(form, i)) }}
{% endfor %}
{{ form_end(form) }}
{% endblock %}
推荐阅读
- javascript - 如何将js小部件转换为amp组件
- python - 如何找到所有可能的参数和函数组合
- python - collatz func 在用 python 自动化无聊的东西
- react-redux - 有条件地连接组件时“对象作为 React 子项无效”Redux 错误?
- javascript - iife 与 document.title 的简单语句行为
- c++ - 将函数标识符作为右值引用传递并对其应用 std::move()
- docker - 不健康的 docker 容器未由 docker 本机运行状况检查重新启动
- sql - 如何从下面的多个时间和时间计算总小时数?
- json - 如何修复 XML HTTP 请求中的“下标超出范围”错误
- android - 如何将一个android活动连接到另一个?