Symfony2中表单中实体字段类型的其他属性

Strnm

在Symfony2中,是否有一种方法可以将更多字段从实体映射到从基于实体的表单生成的选择下拉列表的选项标签中?

我目前有类似的东西:

    $builder->add('creditcard', 'entity',
        array( 'label' => 'Credit Card',
            'required' => true,
            'expanded' => false,
            'class' => 'Acme\Bundle\Entity\CreditCard',
            'property' => 'display_text',
            'multiple' => false,
            'query_builder' => function(\Acme\Bundle\Repository\CreditCardRepository $er)  {
                return $er->createQueryBuilder('b');
            },
            'mapped' => false,
        ));

这工作正常,但我想生成如下内容:

<option value="id" string_mapped_from_field1="value_of_field1">display_text</option>

谢谢!

Strnm

好吧,如果有人带着相同的问题来到这里,这就是我最后要做的事情:

我创建了一个自定义字段类型(请参阅http://symfony.com/doc/current/cookbook/form/create_custom_field_type.html

由于最后我们将成为一个实体字段,因此您需要添加:

    public function getParent() {
        return 'entity';
    }

在表单上使用它时:

    $builder->add('creditcard', new CreditCardFieldType(),
        array( 'label' => 'Credit Card',
            'required' => true,
            'expanded' => false,
            'class' => 'Acme\Bundle\Entity\CreditCardCharge',
            'property' => 'object',
            'multiple' => false,
            'query_builder' => function(\Acme\Bundle\Repository\CreditCardChargeRepository $er)  {
                return $er->createQueryBuilder('b');
            },
            'mapped' => false,
        ));

object是添加到包含整个对象的实体的新属性,因此我添加到了实体:

public function getObject()
{
    return $this;
}

这样,我们可以从模板访问对象,我们只需要为自己的自定义字段类型创建一个新模板:

{% block creditcard_widget %}
    {% spaceless %}
        {% if required and empty_value is none and not empty_value_in_choices %}
            {% set required = false %}
        {% endif %}
        <select {{ block('widget_attributes') }}{% if multiple %} multiple="multiple"{% endif %}>
            {% if empty_value is not none %}
                <option value=""{% if required and value is empty %} selected="selected"{% endif %}>{{ empty_value|trans({}, translation_domain) }}</option>
            {% endif %}
            {% if preferred_choices|length > 0 %}
                {% set options = preferred_choices %}
                {{ block('choice_creditcard_widget_options') }}
                {% if choices|length > 0 and separator is not none %}
                    <option disabled="disabled">{{ separator }}</option>
                {% endif %}
            {% endif %}
            {% set options = choices %}
            {{ block('choice_creditcard_widget_options') }}
        </select>
    {% endspaceless %}
{% endblock creditcard_widget %}

{% block choice_creditcard_widget_options %}
    {% spaceless %}
        {% for group_label, choice in options %}
            {% if choice is iterable %}
                <optgroup label="{{ group_label|trans({}, translation_domain) }}">
                    {% set options = choice %}
                    {{ block('choice_creditcard_widget_options') }}
                </optgroup>
            {% else %}
                <option value="{{ choice.data.creditcard }}" charge="{{  choice.data.charge }}" {% if choice is selectedchoice(data.creditcard_charges_id) %} selected="selected"{% endif %}>{{ choice.data.text|trans({}, translation_domain) }}</option>
            {% endif %}
        {% endfor %}
    {% endspaceless %}
{% endblock choice_creditcard_widget_options %}

并在您的config.yml中将其注册为树枝:

twig:
    form:
        resources:
            - 'AcmeBundle:Form:creditcardfield.html.twig'

不确定这是最好的解决方案,但可以解决问题。希望能帮助到你。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Symfony2中将实体字段类型显示为每个实体的某些属性的表

来自分类Dev

Symfony2表单,字段不在实体中

来自分类Dev

隐藏在Symfony2中的实体字段类型

来自分类Dev

实体属性类型作为Symfony2中的对象

来自分类Dev

Symfony2:动态更改实体字段类型的类属性

来自分类Dev

基于Symfony2中其他字段值的字段的条件验证

来自分类Dev

Symfony2 FormType实体字段类型

来自分类Dev

使用其他实体symfony2的数据更新实体字段

来自分类Dev

使用来自其他实体symfony2的数据更新实体字段

来自分类Dev

在symfony2表单构建器中访问底层实体

来自分类Dev

Symfony2,YML文件,实体和表单中的验证

来自分类Dev

如何基于Symfony中的其他2个字段动态修改表单字段?

来自分类Dev

实体和MySQL中的学说数组类型(Symfony2)

来自分类Dev

Symfony2:如何通过某个属性过滤实体选择表单字段的选项?

来自分类Dev

Symfony2实体表单字段及其属性名称

来自分类Dev

Symfony2:对一个实体属性使用两个表单字段?

来自分类Dev

在symfony2中缓存实体方法/属性

来自分类Dev

处理Symfony2中的额外表单字段

来自分类Dev

Symfony2中的组表单字段

来自分类Dev

在Symfony2中覆盖表单字段模板

来自分类Dev

处理Symfony2中的额外表单字段

来自分类Dev

覆盖Symfony2中的表单字段模板

来自分类Dev

Symfony2 | 表单-创建复杂的字段类型并将其转换为orm中的一个字段

来自分类Dev

来自实体的Symfony表单以及其他字段

来自分类Dev

Symfony2表单-如何自动填充相关实体的字段?

来自分类Dev

Symfony2表单-如何自动填充相关实体的字段?

来自分类Dev

Symfony2表单类型实体添加额外选项

来自分类Dev

Symfony从表单类型的实体中创建选择

来自分类Dev

Symfony2选择约束/实体字段类型验证

Related 相关文章

  1. 1

    在Symfony2中将实体字段类型显示为每个实体的某些属性的表

  2. 2

    Symfony2表单,字段不在实体中

  3. 3

    隐藏在Symfony2中的实体字段类型

  4. 4

    实体属性类型作为Symfony2中的对象

  5. 5

    Symfony2:动态更改实体字段类型的类属性

  6. 6

    基于Symfony2中其他字段值的字段的条件验证

  7. 7

    Symfony2 FormType实体字段类型

  8. 8

    使用其他实体symfony2的数据更新实体字段

  9. 9

    使用来自其他实体symfony2的数据更新实体字段

  10. 10

    在symfony2表单构建器中访问底层实体

  11. 11

    Symfony2,YML文件,实体和表单中的验证

  12. 12

    如何基于Symfony中的其他2个字段动态修改表单字段?

  13. 13

    实体和MySQL中的学说数组类型(Symfony2)

  14. 14

    Symfony2:如何通过某个属性过滤实体选择表单字段的选项?

  15. 15

    Symfony2实体表单字段及其属性名称

  16. 16

    Symfony2:对一个实体属性使用两个表单字段?

  17. 17

    在symfony2中缓存实体方法/属性

  18. 18

    处理Symfony2中的额外表单字段

  19. 19

    Symfony2中的组表单字段

  20. 20

    在Symfony2中覆盖表单字段模板

  21. 21

    处理Symfony2中的额外表单字段

  22. 22

    覆盖Symfony2中的表单字段模板

  23. 23

    Symfony2 | 表单-创建复杂的字段类型并将其转换为orm中的一个字段

  24. 24

    来自实体的Symfony表单以及其他字段

  25. 25

    Symfony2表单-如何自动填充相关实体的字段?

  26. 26

    Symfony2表单-如何自动填充相关实体的字段?

  27. 27

    Symfony2表单类型实体添加额外选项

  28. 28

    Symfony从表单类型的实体中创建选择

  29. 29

    Symfony2选择约束/实体字段类型验证

热门标签

归档