2013-04-10 2 views
2

나는 action_register 함수를 사용하여 새 사용자를 등록하려고합니다. 로그인이 성공하면 사용자는 action_login을 통해 표시된 로그인 양식으로 전달됩니다. 그러나 $message$message_type을 "내 계정이 생성되었습니다. 로그인하십시오."와 같은 로그인보기에 보내고 싶습니다.데이터가있는 다른 컨트롤러로 리디렉션

이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 최선의 방법은 유지 보수가 가능하고 깨끗하고 안전하다는 의미입니다. 지금까지

내 아이디어 :

  • POST action_login 및 재 라우팅 URL로 데이터입니다.
  • 데이터를 컨트롤러 메소드로 전송하고 항상 action_login을 렌더링하는 방법을 찾으십시오.

답변

5

는 연료 PHP는 기능을 처리 할 수있는 아주 좋은 인터페이스를 제공합니다. 핵심 세션 클래스는 문서별로 사용하는 방법입니다. 귀하의 경우

은 그럼 그냥 나중에 그냥 사용할 수있는 로그인의 뷰 파일에서 아래

Session::set_flash('success', 'Your account has been successfully created !'); 

같은 플래시 메시지를 설정, register_action에서 성공적인 등록 절차 후 login_action로 리디렉션 필요하다고 할 수 있습니다 당신이 원하는 플래시 메시지를 얻기 위해 아래의 코드.일부 무엇처럼이

<?php if (Session::get_flash('success')): ?> 
    <div class="alert-box info"> 
     <?php echo Session::get_flash('success') ; ?> 

    </div> 
<?php endif; ?> 

또한 당신은 세션 메시지는 단지

Session::delete_flash('success'); 

당신이 배울 수 세션 클래스에 대한 자세한 내용을 알고 다음과 같은 방법을 delete_flash 사용하여 위의 예에서 '성공'을 말할 삭제할 수 있습니다 또한

FuelPhp Session Class docuementation

그리고 아래 링크는 새로운 PHP 코드를 작성하지 않아도 사용자를 리디렉션, 연료 PHP 좋은를 제공합니다 그도에 대한 인터페이스는 당신이 여기

당신은 항상 당신의 컨트롤러 액션

Response::redirect('yourRouteName'); 

그것의에 좋은 사용자를 리디렉션 할 필요가 어떻게 그렇게 할 수 있도록 정의 된 방법이있는 '응답'클래스 프레임 워크에 정의 된 클래스를 이용하여 실제로 개발자가 쉽게 사용할 수 있도록하려는 의도로 정의됩니다.

프로그래밍 방식에서 객체 지향적 인 경우 특히 fuelPhp와 같은 우수한 품질의 OOP MVC 프레임 워크를 사용할 때 준비가 완료된 Getters and setters에 대한 액세스 권한을 제공하여 항상 바퀴를 다시 발명 할 수 없습니다 (DRY).

희망이 있습니다.

+1

@Telvin Nguyen의 코드는 의도 한대로 작동하지만 프레임 워크가 제공해야하는 클래스를 사용하는 것이 올바른 방법입니다. 나는 이것에 투표한다! –

+0

그래, 대신 플래시 변수를 설정하는 것에 대해 물어볼 때 내가하고 있었던 일입니다. 놀랍게도 작동합니다. – n0pe

1

이 메시지는 한 번만 (등록 후) 표시되지만 미래에 프로젝트에 이와 같은 메시지가 많이 올 것이라고 믿습니다.

당신은 그 일하고 resusability 에 대한 작업을 수행하는 코드의 조각을해야한다 - 당신이 결과로 일을 한 후에는 다음 다른 동작 예로 리디렉션, 세션 변수에 메시지를 저장해야합니다

$_SESSION['msg'] = 'Your account has been created, please log in'; 
  • 화면 대상에서 세션 변수가 설정되었는지 확인한 다음 세션 var에 저장된 메시지를 인쇄하고 지 웁니다. 당신은 실제로 세션 메시지를 설정하는 코드의 조각을 수행 할 필요가 없습니다

     <?php 
         if(isset($_SESSION['msg']){ 
         ?> 
         <script> 
         //call some javascript function to display popup for example 
         var msg = '<?php echo $_SESSION['msg']; ?>'; 
         display_popup_message(msg); 
    
         function display_popup_message(msg){ 
          alert(msg); 
         } 
         </script> 
         <?php 
         unset($_SESSION['msg']); 
         } 
         ?> 
    
+0

아, 올바른 세션 변수가 훨씬 더 적합합니다. 플래시 세션 변수를 설정해야합니까? – n0pe

+0

네, 그렇게해야합니다. –

+0

FuelPHP는 PHP 기본 세션을 사용하지 않으므로 기본적으로 다음 요청으로 전달되지 않습니다. aravind.udayashankara의 anwser는 올바른 방법입니다. – WanWizard

관련 문제