在表单构建器中访问表单数据以添加自定义属性

时间:2013-02-20 09:37:08

标签: symfony symfony-2.1 symfony-forms

我正在创建表格女巫有集合类型和集合元素有字段与数据转换器女巫是ID到实体转换器:

$builder->add(
        $builder->create('template', 'text', array(
            'label' => false,
            'required' => false,
            'attr' => array(
                'class' => 'template-selector',
            )
        ))->addModelTransformer($transformer)
    );

这是必需的,因为我想将此字段转换为Select2(javascript lib)ajax powered元素。

问题是我需要用数据填充Select2,为此我只有一个合理的(用于性能)选项从表单构建器传递数据作为属性(比如数据值)但表单构建器有任何数据,除非我在EventListener中创建元素,但后来我无法添加模型转换器。

我怎样才能实现这样的功能?没有任何额外的查询或ajax调用?

1 个答案:

答案 0 :(得分:0)

我发现在twig模板中执行此操作的唯一方法是:

{% if item.get('value').template %}
    {% set templ_id = item.get('value').template.getId %}
    {% set templ_text = item.get('value').template.getTitle %}

    {{ form_row(item.template, {'attr': {'data-value' : '{id:' ~ templ_id ~ ', text:"' ~ templ_text ~ '"}'}}) }}
{% else %}
    {{ form_row(item.template) }}
{% endif %}

其中item是表单集合元素