Symfony2更改实体字段值取决于区域设置

时间:2014-08-11 14:25:51

标签: php symfony

我有一个名为Country的实体。它包含以下字段:

id
nameDe //German Names
nameEn //English Names

现在我有一个FormTyp,其中Countryentity类型的字段,将在FormBuilder中设置。

$builder 
    ....
    ->add('country', 'entity', array(
                "class" => "Company\Project\ProjectBundle\Entity\Country",
                'required' => false
            ));

一切正常,Country条目将显示在表单中,但始终是nameDe字段中的德语名称。

我正在使用我的网址中的locale将我的应用程序翻译成英文,这是正常的方法。

现在我想在nameEn建立时显示来自locale的英文国家/地区,我该怎么办?我考虑过来自PRE_SET_DATA的{​​{1}}事件,但我有点无能为力。实现这个目标的方法是什么?

1 个答案:

答案 0 :(得分:1)

你可以很容易地做到这一点。最简单的方法是:

  • 通过FormType构造函数注入语言环境并将其存储在类字段
  • 构建表单时使用该值

构造

private $locale;

public function __construct($locale){
    $this->locale = $locale;
}

现在,只需添加property选项:

$builder 
    ....
    ->add('country', 'entity', array(
                "class" => "Company\Project\ProjectBundle\Entity\Country",
                'required' => false,
                'property' => $this->locale
            ));

我更喜欢的另一种方法是将FormType定义为服务,并将其设置为自动注入locale