Symfony2使用动态表单更新实体字段

时间:2015-04-24 09:24:57

标签: php forms symfony

我尝试使用一些动态生成的表单来更新我的实体,以便执行修改。使用x-editable使用ajax发送值。我的问题是我无法执行修改,因为表单不会提交,我也不知道为什么。

这是我目前的一段代码:

// I can pass all those data using X-editable without a problem
$id         = 1;              // entity ID
$value      = 'someNewValue'; // new value
$type       = 'text';         // type of field
$schem      = array('AppBundle', 'membre', 'prenom'); // The stuff used to to work this out
$em         = $this->getDoctrine()->getManager();
$entity     = $em->getRepository($schem[0] . ':' . ucfirst($schem[1]) )->find($id); // Now I've got my entity

// I create a dynamic form with no CSRF protection (as I read in some other post)
$form = $this->createFormBuilder($entity, array(

        'csrf_protection' => false
    )
)->add($schem[2])
  ->getForm();

var_dump($form->isValid()); // false
$form->get($schem[2])->submit($value); // trying to submit the new value
var_dump($form->isValid()); // still false

var_dump($form->getErrorsAsString()); // Shows ''

以下是我的实体的目标字段(在此示例中)

/**
 * @var string
 * @ORM\Column(name="prenom", type="string", length=255)
 */
private $prenom;

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

好的,我找到了解决方案。 主要问题发生在我尝试提交新值的行

$form->get($schem[2])->submit($value);

我不知道为什么,但这根本不起作用。实际上我必须在表单上使用submit,如下所示:

$form->submit( array($field => $value) );

其中$field是我实体中的更新字段,$value是新值。有关更多信息,请查看the documentation