我有一个Symfony表格的问题,我希望根据事先查看的记录预先填写。目的是创建一种更改记录数据的方法。 我通过javascript导航到表单页面并将ajax请求发送到表单呈现的同一个控制器。
这是用于查看记录的页面的一部分:
<input type="button" id="changeRecord" value="change"/>
record id: <div id="recordID"> {{ record_id }} </div>
我通过javascript / jQuery访问记录ID,如下所示:
var CssSelectors = new Array(
"recordID"
);
function getCurrentRecordID() {
return parseInt($.trim($("#" + CssSelectors[0]).text()));
};
javascript中的按钮代码如下:
$('#changeRecord').click(function () {
window.location.replace(Routing.generate(recordChangeRoute));
$.ajax({
url: Routing.generate(recordChangeAjaxRoute),
type: "POST",
data: {'recordID': getCurrentRecordID()}
});
// both Routes point to the same controller
// problem located here ???
Symfony Controller Action如下:
public function changePlasmidRecordAction(Request $request) {
$em = $this->getDoctrine()->getManager();
$recordHandle = $em->getRepository('DataBundle:RecordClass');
$AjaxRequest = Request::createFromGlobals();
$RecordID = $AjaxRequest->request->get('recordID');
$recordToUpdate = $recordHandle->findOneBy(array('id' => $RecordID));
$updateForm = $this->createForm(new RecordClassType(), $recordToUpdate);
$updateForm->handleRequest($request);
if ($updateForm->isValid()) {
$em->flush();
return this->redirect($this->generateUrl('route_showRecord'));
} else {
return $this->render('DataBundle:RecordClass:updateRecord.html. twig',
array(
'RecordID' => $RecordID,
'form' => $updateForm->createView()
));
}
}
我想要实现的目标是:
查看记录,创建表单,将更改保存到数据库 - 所有工作。什么不起作用是访问控制器内所需的ID。 我可以按照我在其他控制器操作中尝试的方式访问ajax请求数据而不会出现问题。 “表单请求”如何干扰?或者是吗? 我是否必须使用事件监听器?
非常感谢任何帮助,提前谢谢!
答案 0 :(得分:0)
我通过离开ajax东西并通过GET提交所需数据来修复它。像这样:
$('#changeRecord').click(function () {
window.location.replace(Routing.generate(recordChangeRoute, {'recordID': getCurrentRecordID()}));
});
感谢您的投入,一切顺利。