我将Symfony 2与ajax一起使用。我有一个表单,当我点击我可以发送一个表格由ajax。我想发送2变量:
例子:ajax:
$.ajax({
url : "{{path('lcv_acceuil_form')}}",
type : "POST",
dataType : 'html',
data:
{
msg: 'form',
datas: $('form#recherche').serialize()
},
cache:false,
success : function() ...
控制器:
public function formAddAction()
{
$entity = new FormA();
$form = $this->createForm(new FormAType(),$entity);
$request = $this->get('request');
$em = $this->getDoctrine()->getManager();
if($request->getMethod()=='POST')
{
if($request->isXmlHttpRequest())
{
if ($request->request->get('msg') == "msg")
{
return (new Response('Msg'));
}
else if ($request->request->get('msg') == "form")
{
$form->bind($request);
$em->persist($entity);
$em->flush();
return (new Response('Form added'));
}
else
{
return (new Response('Its not Good!!'));
}
}
return (new Response('End'));
}
return $this->render('LCVAcceuilForm:Pages:formmanagement.html.twig',
array('entity'=>$entity,'form'=>$form->createView()));
}
我有绑定问题!!
我的实体是空的......
当我改变我的"数据"在ajax只有$('form#recherche').serialize()
(只有一个变量)它的工作。
我的错误在哪里?
答案 0 :(得分:0)
我认为你正在错误地打包数据。
首先,收集表单数据,然后添加msg
项目:
var data = $('form#recherche').serializeArray();
data['msg'] = 'form';
然后:
....
data: data
....
答案 1 :(得分:0)
您只需在Controller中正确读取表单数据即可。例如,如果您的FormA
实体具有属性(也是getter和setter):
你必须做这样的事情:
public function formAddAction()
{
$entity = new FormA();
$form = $this->createForm(new FormAType(),$entity);
$request = $this->get('request');
$em = $this->getDoctrine()->getManager();
$form->handleRequest($request);
if($request->getMethod()=='POST')
{
if($request->isXmlHttpRequest()) {
$data = $form->getData();
if ($request->request->get('msg') == "msg") {
return (new Response('Msg'));
} elseif ($request->request->get('msg') == "form") {
$entity->setName($form['name']);
$entity->setSurname($form['surname'])
$em->persist($entity);
$em->flush();
}
}
return new Response('Success');
}
return $this->render('LCVAcceuilForm:Pages:formmanagement.html.twig',
array('entity'=>$entity,'form'=>$form->createView())
);
}
你的ajax应该是这样的:
$.ajax({
url : "{{path('lcv_acceuil_form')}}",
type : "POST",
dataType : 'html',
data: $('form#recherche').serialize(),
cache:false,
success : function() ...
如果您的FormAType
表单名称例如:formA
在twig中,则必须使用正确的表单名称和字段名称显示输入。这应该是这样的:
<input type="text" name="formA[name]"/>
<input type="text" name="formA[surname]"/>
<input type="hidden" name="msg" value="test"/>
当然,您的FormAType
应该包含上述字段。