将变量的值传递给symfony函数

时间:2013-12-12 23:01:00

标签: symfony twig render

我想在Symfony中动态呈现一个表单。我将带有元素名称元素的数组传递给render方法'formElements' => array('formelement1', 'formelement2')

我想如何使用模板中的元素名称来显示表单标签。

{% for elementName in elementNames %}
    <div class="form-lable">
        {{ form_label({{ elementName }}) }}
    </div>
{% endfor %}

我收到以下例外:

  

哈希键必须是带引号的字符串,数字,名称或括在括号中的表达式(onBillBundle中值为“{”的意外标记“标点符号”:第17行的客户:new.html.twig

在没有{{ form(delete_form) }}的情况下动态呈现表单是否不可行?

2 个答案:

答案 0 :(得分:2)

未经测试...

{% for elementName in elementNames %}
    <div class="form-lable">
        {{ form_label(attribute(form, elementName)) }}
    </div>
{% endfor %}

Docs

答案 1 :(得分:-1)

您不需要使用{{}}在twig语句中包围变量。所以你的代码应该是:

{{ form_label(elementName) }}

但当然elementName需要是 Form 对象而不是字符串。您可以在 Controller 中生成它们,如下所示:

public function testAction()
{
    // ...
    $form = $this->createFormBuilder()
        ->add('name', 'text');

    return ['form' => $form->createView()];
}