php - Symfony 如何转换表单中的数据值

标签 php symfony-forms symfony

我在 buildForm 中有以下代码,我想获得 'report_abuse' 的翻译,但我找不到方法。可能吗?

class AbuseType extends AbstractType
{
    // ...

    $builder->add('subject', TextType::class, array(
        'label' => 'label.subject',
        'data' => 'report_abuse',
        'disabled' => 'true',
    ))

    // ...   
 }

最佳答案

尝试显式设置 translation_domain:

$builder->add('subject', TextType::class, array(
    // ...
    'translation_domain' => 'messages',
))

您也可以通过将此方法添加到整个 FormType 来执行此操作:

public function setDefaultOptions(OptionsResolverInterface $resolver)
{    
    $resolver->setDefaults(array(
        'translation_domain' => 'messages'
    ));
}

如果它不起作用,请通过注册将转换器 注入(inject)到您的FormTypeas a service :

# services.yml
services:
    app.form.type.abuse:
        class: AppBundle\Form\Type\AbuseType
        arguments: [ "@translator" ]
        tags:
            - { name: form.type }

直接调用翻译器:

use Symfony\Component\Translation\TranslatorInterface;

class AbuseType extends AbstractType
{
    public function __construct(TranslatorInterface $translator)
    {
        $this->translator = $translator;
    }

    // ...

    $builder->add('subject', TextType::class, array(
        'label' => 'label.subject',
        'data' => $this->translator->trans('report_abuse', array(), 'messages'),
        'disabled' => 'true',
    ))
}

关于php - Symfony 如何转换表单中的数据值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36141590/

相关文章:

PHP 在一个函数中开始循环并在另一个函数中结束?

symfony - Symfony2:无法加载 “MyType”类型

doctrine-orm - Symfony3 - 添加记录 Doctrine 查询的记录器

php - symfony2实体的slugify方法在哪里

php - 为什么我不应该将我的 PHP 文件放在 public_html 文件夹中?

php - 在 Facebook 应用程序中存储或不存储数据

php - yii2 gridview过滤日期

forms - 如何在 Symfony2 中动态添加验证器?

symfony - Symfony2-> Twig ->表单->字段->设置渲染= true

php - 在 Symfony2 中组织 View