[英]Symfony2 Passing ajax request data to a form rendering controller
我有一個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控制器操作如下:
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請求數據,而不會出現問題。 “表單請求”如何干預? 還是? 我必須使用事件監聽器嗎?
非常感謝您的任何幫助,在此先感謝您!
我通過保留ajax內容並通過GET提交所需的數據來修復它。 像這樣:
$('#changeRecord').click(function () {
window.location.replace(Routing.generate(recordChangeRoute, {'recordID': getCurrentRecordID()}));
});
謝謝您的寶貴意見。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.