访问symfony2表单构建器中的基础实体

时间:2013-12-16 05:44:28

标签: forms symfony

我正在寻找一种方法来访问symfony2表单构建器类中的数据类实体。

我需要这个的原因是因为提交按钮上的文本应该根据此实体的值(用户无法在表单中更改的值)而更改。

基本上我想这样做:

if ($this->entity->getVariable() == xxx) {
// do something
} else {
// do something else
}
表单构建器类

中的

2 个答案:

答案 0 :(得分:3)

praxmatig指出我正确的方向,解决方案更容易:

基础实体自动作为名为" data"的选项提供,您可以这样做:

public function buildForm(FormBuilderInterface $builder, array $options) {
   // whatever

   if (isset($options['data'])) {
      switch ($options['data']->getSomeVariable()) {
      // whatever
      }
   }

   // whatever
}

答案 1 :(得分:1)

如果您从控制器创建表单,您可以传递任何您想要的选项

// AcmeType.php
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $entity = $options['entity'];
}

// AcmeController.php
$form = $this->createForm(new AcmeType(), $entity, array('entity' => $entity));

或者更好但更难的方法是使用form event