我正在寻找一种方法来访问symfony2表单构建器类中的数据类实体。
我需要这个的原因是因为提交按钮上的文本应该根据此实体的值(用户无法在表单中更改的值)而更改。
基本上我想这样做:
if ($this->entity->getVariable() == xxx) {
// do something
} else {
// do something else
}
表单构建器类中的
答案 0 :(得分:3)
基础实体自动作为名为" 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