AJAX 요청에서 양식 제출을 처리하는 컨트롤러가 있습니다. 나는 나 자신을 반복하고 싶지 않아, 그래서 방법으로 폼 처리 코드를 삽입 :POST 대신 PUT을 사용하여 양식 제출
// Should process POST request
public function create(Request $request)
{
return $this->processEdit($request);
}
// Should process PUT request
public function update($id, Request $request)
{
$entity = $this->findEntity($id); // custom method
if (!$entity)
return $this->myCustomErrorResponse();
return $this->processEdit($request, $entity);
}
private function processEdit(Request $request, Entity $entity = null)
{
$form = $this->createForm('my_entity', $entity);
$form->handleRequest($request);
if ($form->isValid()) {
// Do something
} else {
// Handle invalid form
}
return $response;
}
내가 가지고있는 다음과 같은 두 가지 경로 : 그러나
ajax_create:
pattern:/
defaults: { _controller: 'MyBundle:Ajax:create' }
methods: [ POST ]
ajax_update:
pattern: /{id}
defaults: { _controller: 'MyBundle:Ajax:update' }
methods: [ PUT ]
requirements:
id: \d+
, 나는 AJAX를 통해 양식을 제출할 때 , 그것은 양식 오류 메시지없이 PUT
요청 및 반환 양식을 사용할 수 없습니다 허용하지 않습니다. 내가 컨트롤러 코드 ABIT를 변경하는 경우,
$form = $this->createForm('my_entity', $entity, array(
'method' => 'PUT',
));
... 그것은
PUT
요청하지만
POST
요청을 처리합니다.
Symfony2의 어느 부분에서 HTTP 메소드가 양식을 검사하는지 궁금해하므로 소스 코드에서 답변을 찾으려고했지만 단서를 찾을 수 없습니다. 여러분 중 누구도 지식을 공유 할 수 있습니까?
또 다른 질문은 HTTP 메소드 검사를 건너 뛸 수있는 방법이 있습니까? 현재 $method
을 위의 방법에 전달 중입니다.
대단히 감사합니다.
업데이트 :
내 질문에 명확하게하기 위해, 내 Symfony2 응용 프로그램 경로 요청 (POST 모두와 PUT) 올바른 제어 방법에 관한 것이다.
// Should process POST request
public function create(Request $request)
{
return $this->processEdit($request);
}
// Should process PUT request
public function update($id, Request $request)
{
$entity = $this->findEntity($id); // custom method
if (!$entity)
return $this->myCustomErrorResponse();
return $this->processEdit($request, 'PUT', $entity);
}
private function processEdit(Request $request, $method = 'POST', Entity $entity = null)
{
$form = $this->createForm('my_entity', $entity, array(
'method' => $method,
));
$form->handleRequest($request);
if ($form->isValid()) {
// Do something
} else {
// Handle invalid form
}
return $response;
}
안녕하세요. 어제 또 다른 비슷한 형식을 구현하고 있었는데 갑자기'Request :: getMethod()'를 사용할 수 있다는 것을 깨달았습니다! 어쨌든, 고마워. – pikachu0