2016-07-05 3 views
0

하나의 간단한 텍스트 필드 (양식에 첨부 된 엔티티가 없음) 만 제공하는 createFormBuilder로 작성된 매우 간단한 양식이 있습니다.제출 후 symfony 형식 재설정

양식을 제출할 때 양식을 제출 한 후 양식을 재설정하려면이 주제에 대한 많은 게시물에서 제안 된대로 양식 및 formData를 설정 해제하십시오.

단순한 아약스 요청으로 인해 일부 UI 작업이 주로 시작됩니다. 양식 자체를 만지거나 페이지를 다시로드하지 마십시오.

양식이 명백하게 재설정되기를 원하지 않는다는 것을 제외하면 모든 것이 올바르게 작동합니다. - 의미 : 브라우저의 페이지 새로 고침 버튼을 누를 때마다 양식을 다시 제출할 것인지 묻는 표준 브라우저 대화 상자가 나타납니다. 마지막 렌더 호출이 제출되기 전에 마지막 값을 입력하면됩니다.

템플릿 kw.html.twig는 간단합니다. 주로 UI 렌더링에 양식 렌더링과 아약스 처리를위한 비트 jquery가 있습니다. 특별한 것은 없습니다.

왜 이런 일이 발생하는지 알 수 없습니다. 요청시 깨끗한 양식을 원합니다. 아래 예제 코드 에서처럼 설정을 해제 할 때 어떤 생각이 들었는지.

/** 
* @Route("/kw", name="show_kw") 
*/ 
public function showKwAction(Request $request) 
{ 
    if($request->isXmlHttpRequest()) { 
     if($request->getMethod() == 'POST') { 

      // do some logic... 

      return $this->json(array('kw_success' => true)); 
     } 
    } 

    $kwData = array(); 
    $kwForm = $this->createFormBuilder($kwData) 
     ->add('kd', TextType::class) 
     ->getForm(); 
    if($request->isMethod('POST')) { 
     $kwForm->handleRequest($request); 
     $formData = $kwForm->getData(); 

     // do some logic with formData... 

     unset($kwData); 
     unset($kwForm); 
     $kwData = array(); 
     $kwForm = $this->createFormBuilder($kwData) 
      ->add('kd', TextType::class) 
      ->getForm(); 
    } 

    $templateData = array(
     'kwForm' => $kwForm->createView() 
    ); 
    return $this->render(':backend:kw.html.twig', $templateData); 
} 

어떤 도움을 주셔서 감사합니다.

편집 : 심포니 3.1 그것은 알사스는 주석에서 말했다 정확히 무엇

+0

. 새로 고침을 클릭하면 브라우저가 마지막 요청을 반복합니다. 주소 표시 줄에 주소를 입력하면 GET 요청으로 새로 고침하여 작업을 시작하십시오. – Alsatian

답변

0

사용. 브라우저가 마지막 요청을 반복하려고합니다.

그러나이 문제를 해결하기 위해 데이터를 처리 한 후에도이 양식을 파괴하는 대신 $ this-> redirectToRoute를 사용하여 동일한 경로로 간단하게 리디렉션 할 수 있습니다.

또한 방법이 게시인지 적어도 두 번 확인합니다. 애플리케이션 로직의 나머지 부분과 충돌하지 않는 경우 주석에 @Method("POST")을 지정할 수 있으므로 더 이상 코드에서 직접 확인할 필요가 없습니다. 서버 측 문제가되지 않습니다

최고 감사합니다, R.