好的,我已经使用JQuery将序列化数据提交到我的Symfony 2(2.7.10)应用程序中的函数中。
我现在遇到一些问题,试图将数据绑定到新实体并保存该实体。
以下是我迄今所做的事情:
public function AJAX_SaveTestAction(Request $request) {
// $GetFormData = $request->get('Data'); <- This is a jquery serialized data
$NewData = new TestInfo(); <- this is the entity I want to save
$form = $this->createForm(new InfoType(), $NewData);
$form->handleRequest($request);
if ( $request->isMethod('POST') ) {
$form->bind( $request->get('Data') );
$em = $this->getDoctrine()->getManager();
$em->persist( $NewData ); <- not saving jquery returns 500 server error?
$em->flush();
}
die(); <- this is just here for testing, I will want to return a json message or something else!
}
欢迎大家帮助。
感谢。
答案 0 :(得分:0)
不要使用form-&gt; handleRequest和form-&gt; bind form-&gt; bind相当于在Symfony 2.6之前的form-&gt; handleRequest。
如果您使用的是Symfony 2.3,请使用form-&gt; bind 如果您使用的是Symfony 2.6+,请使用form-&gt; handleRequest
您的控制器应如下所示:
public function AJAX_SaveTestAction(Request $request)
{
$NewData = new TestInfo();
$form = $this->createForm(new InfoType(), $NewData);
$form->handleRequest($request);
if($form->isSubmitted()){ // if you also want to check if your entity is valid, just replace it with "if($form->isValid()){"
$em = $this->getDoctrine()->getManager();
$em->persist( $NewData );
$em->flush();
return new Response('It works');
}
return new Response('error');
}
但是你的JS应该向这条路线发送一个POST请求(带有post参数)。
答案 1 :(得分:0)
要使用handleRequest
将您的请求数据正确绑定到您的实体,Symfony需要一个数组,其中您的表单名称是POSTed数据中的关键字。
如果您没有覆盖表单的方法getName
,则默认情况下会定义为&#34;强调&#34;您的Form类名称。所以它应该是info_type
。
TL; DR:您应该将您的数据提交为['info_type' => [ YOUR DATA... ]]
,而不仅仅是[ YOUR DATA... ]