【问题标题】:Symfony2 How to add label to object type fieldSymfony2 如何为对象类型字段添加标签
【发布时间】:2025-12-03 05:50:02
【问题描述】:

我开始使用 Symfony2 进行开发,但我在使用 Forms 时遇到了一些问题。我使用控制台根据我的实体生成表单字段。一切看起来都很棒,但我必须更改字段标签。当涉及到 idCapacityUnit 时,它基于另一个实体,而 Symfony 使该字段看起来像“选择”。现在我想更改该字段的标签。所以我使用了这段代码:

...
->add('idCapacityUnit', 'choice', array('label' => 'My label'))

但是 Symfony 抛出一个错误,我想给它输入错误的数据类型。我需要为此创建另一个数据转换器吗?

$builder
            ->add('nameShort', 'text', array('label' => 'Nazwa krótka'))
            ->add('capacityValue', 'text', array('label' => 'Pojemność'))
                  ->add('idCapacityUnit', 'choice', array('label' => 'Jednostka'))
            ->add('idCapacityUnit')
            ->add('priceDetail')
            ->add($builder->create('isPackage', 'checkbox')->addModelTransformer($transformer))
            ->add('lifeTime')
            ->add('components')
            ->add('isActive');

也许有办法把这样的东西放在那里:

->add('idCapacityUnit', 'customEntityType:choice', array('label' => 'Jednostka'))

我也不知道如何将标签值放入语言文件中。我试图:

  1. 在路径 src\Vendor\NameOfBundle\Resources\translations\VendorNameOfBundle.en.yml 中创建语言文件
  2. 然后在 *Type 类中我写了 array('label' => 'form.labels.name_short')

在我拥有的语言文件中:

form:
    labels:
        name_short: "Nazwa krótka" 

然后在浏览器中我看到 form.labels.name_short...

【问题讨论】:

    标签: php forms symfony custom-fields


    【解决方案1】:

    一切看起来都不错,但是当涉及到语言文件时,您应该将其重命名为 messages.#you_lang_code#.yml。然后记得通过输入刷新缓存:

    php app/console ca:cl
    

    当涉及到字段时,您可以执行以下操作:

    $builder
    ->add('idCapacityUnit', null, array('label' => 'form.lables.id_capacity_unit'))
    

    祝你好运!

    【讨论】:

      最近更新 更多