我尝试使用一些动态生成的表单来更新我的实体,以便执行修改。使用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;
感谢您的帮助!
答案 0 :(得分:0)
好的,我找到了解决方案。 主要问题发生在我尝试提交新值的行
$form->get($schem[2])->submit($value);
我不知道为什么,但这根本不起作用。实际上我必须在表单上使用submit
,如下所示:
$form->submit( array($field => $value) );
其中$field
是我实体中的更新字段,$value
是新值。有关更多信息,请查看the documentation