질문을 삭제하지 말아주세요.!
 
1
0
-1

안녕하세요 


1.회원가입안내 ---get---> 2.개인정보입력  ----post---->  3,계정정보입력 ---post----> 4.완료

 

위단계에서  마지막 완료에서  계정정보가 맞지 않아

return redirect()->back()
    ->withInput()
    ->withErrors([
        'id' => '아이디를 적확하게 입력하세요',
    ]);

을 했을 경우  3.계정정보입력에  get 을 허용해줘야 합니다.

Route::match(['get', 'post'],....);

 

이렇게 말고 post만으로는 안될까요?

관련해서 좋은 package 는 없을지요?

 

많은 답변 부탁합니다. ^^

하루에 하나씩 질문을 올리네요 ㅎㅎ

 



    CommentAdd your comment...

    2 answers

    1.  
      3
      2
      1

      이건 POST 처리에서 화면 출력을 지양하고, 리다이렉트만 반환 구조로 변경이 필요해 보입니다.


      꼭 라라벨이 아니더라도 위와 같은 구조에선 '3, 4'단계처럼 이전 페이지가 POST 인 경우,

      사용자가 '뒤로 가기'를 누르면 '폼 재전송 확인창'이 나오게 되는 문제가 있습니다.


      이런 사용자 불편을 개선하기 위해...

      폼이 2개 이상 연속으로 이어질 경우,

      첫번째 폼의 데이터를 두번째 폼에 포함시켜 재전송하는 기법대신,

      첫번째 폼의 데이터를 세션에 저장하는 기법을 많이 사용했었죠.


      라라벨에서도 마찬가지입니다.

      다만 라라벨에서는 라우터 사용으로 GET/POST 구분이 명확하고,

      페이지 이동시 HTTP redirection 을 사용하기 때문에 '2개 연속 폼'의 세션 활용이 필수인 점만 다릅니다.


      즉, 현재 컨트롤러 메서드를 다음처럼 확장이 필요해 보입니다.


      RegisterController.php


      getIntro - 회원가입 안내

      getPrivacy - 개인정보 입력

      postPrivacy - 개인정보 세션 저장후, getAccount redirect

      getAccount - 계정정보 입력

      postAccount - 세션에 저장된 개인정보 + 계정정보 입력 저장, getComplete redirect

      getComplete - 회원가입 완료.  감사감사


      즉 라라벨에서는 HTTP POST 요청시에는 처리 결과(json,xml,text ...)나 http redirect 만 사용한다는 설계 원칙이 중요합니다.

      향후 API 서비스로의 확장에도 필수적인 개념이고요.

        CommentAdd your comment...
      1.  
        2
        1
        0

        HTTP 3xx(리디렉션) 요청을 POST로 보내는 방법은 없을 것 같습니다. 혹시 제가 잘못 안내하고 있다면 누구든 지적해 주세요.

          CommentAdd your comment...