하나의 작업에서 2 개의 양식을 만들고이 양식을 jquery ajax에서 다른 2 개의 작업으로 제출합니다. 이제 문제는 첫 번째 양식 만 작동한다는 것입니다. 양식을 편집하면 해당 csrf 토큰이 유효하지 않습니다. 왜 그런 일이 일어나는거야? 내 코드 :symfony2 양식 유형을 사용하는 CSRF가 유효하지 않습니다.
작성 양식 :
$project = new Project();
$addProjectForm = $this->createForm(new AddProjectType(), $project, [
'action' => $this->generateUrl('tfpt_portfolio_versionhistory_addproject'),
'method' => 'POST',
'attr' => ['id' => 'newProjectForm']
]);
$editProjectForm = $this->createForm(new EditProjectType(), $project, [
'action' => $this->generateUrl('tfpt_portfolio_versionhistory_editproject'),
'method' => 'POST',
'attr' => ['id' => 'editProjectForm']
]);
편집 양식을 제출 취급 (그러나 양식을 추가 거의 동일) :
는$project = new Project();
$form = $this->createForm(new EditProjectType(), $project);
$form->handleRequest($request);
if($form->isValid()){
//handle form
}
}
이 두 형태 사이의 유일한 디퍼 런스 세라마이드는이 그 편집 양식입니다 한 번 더 필드 - 숨겨진 ID.
var form = $("#editProjectForm")
if(form.valid()){
$("#loader").show();
$.ajax({
type: form.attr('method'),
url: form.attr('action'),
data: form.serialize()
}).done(function(data){
//result
}
});
을 그리고 난 그런 형태의 표시 : 모두 그렇게 JQuery와에 의해 작성
{{ form_start(editProjectForm) }}
{{ form_errors(editProjectForm) }}
{{ form_widget(editProjectForm.name) }}
{{ form_widget(editProjectForm.id) }}
{{ form_rest(editProjectForm) }}
{{ form_end(editProjectForm) }}
누군가가 내 실수를 지적 할 수 있습니까? 하나의 작업에 3 가지 양식을 포함시킬 수 있습니까? 아니면 CSRF를 다른 방식으로 생성해야합니까?
@ 편집 : 심포니를 최신 릴리스로 업데이트 했으므로 지금은 완벽하게 작동합니다. 이 버전이 버그가 있거나 벤더 코드가 부족한 것 같습니다. 어쨌든 문제가 해결되었습니다.
잘 모르겠습니다. 3 가지 양식을 동시에보기에 보냅니 까? 컨트롤러 액션 코드는 어떻게 생겼습니까? – cheesemacfly
예, 저는 그것을 (2 가지 형식으로)하고 있습니다. 내 질문은 내가 할 수 있는지에 관한 것이다. 그리고 그렇지 않은 경우 - 대안은 무엇입니까? 내 작업이 한 줄만 더 많았습니다. 그 형식의 배열 반환 – Nekromancer