2013-04-10 93 views
2

我有一個action_register函數,它試圖註冊一個新用戶。如果成功,我希望用戶被轉發到登錄表單(通過action_login顯示)。但是,我還想發送一個$message$message_type到類似「您的帳戶已創建,請登錄」的登錄視圖。重定向到另一個數據控制器

這樣做的最好方法是什麼。我最好的意思是可維護,乾淨和安全。

我的想法到現在:

  • POST數據到URL路由到action_login和重定向。
  • 找到一種方法將數據權限發送給控制器方法,並且一如既往地渲染action_login

回答

5

你其實並不需要做任何代碼片段設置會話消息,燃油PHP提供了一個很好的接口來處理這樣的功能。它的核心會話類是我們需要按照文檔來使用的。

你的情況

假設你需要從register_action併成功註冊過程後重定向到login_action,那麼就設置閃光燈消息像下面

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

你可以只使用登錄的視圖文件後來下面的代碼來獲取你想要的Flash消息。一些什麼樣的這個

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

    </div> 
<?php endif; ?> 

,你也可以刪除會話消息通過只使用delete_flash方法如下面

Session::delete_flash('success'); 

要更多地瞭解你可以借鑑會話班說,在上面的例子中「成功」下面

FuelPhp Session Class docuementation

而且還鏈接,你不需要編寫任何新的PHP代碼將用戶重定向,燃料PHP提供了一個很好的界面太,其具有定義爲你做

這裏是你如何需要將用戶重定向在你的任何控制器動作

Response::redirect('yourRouteName'); 

它的總是一個好方法「響應」類練習利用框架中定義的類,這些類實際上是爲了讓開發者生活變得容易而定義的。

在您的編程方法中面向對象,特別是在使用像FuelPhp這樣的高質量OOP MVC框架時,您可以通過爲您提供訪問現成的Getters and setters來防止總是重新發明輪子(DRY)。

希望這會有所幫助

+1

儘管@Telvin Nguyen的代碼可能按預期工作,但使用框架所提供的類是正確的做事方式。我對這個投票! – 2013-04-10 21:09:43

+0

是的,當我詢問設置閃存變量的時候,這就是我所做的。奇妙地工作。 – n0pe 2013-04-10 21:23:05

1

在這種情況下的消息只顯示一次(註冊後),但我相信在未來您的項目將帶有許多這樣的消息。

你應該做的代碼片段做的事情,爲resusability - 你做的東西作爲結果之後,你需要信息存儲到一個會話變量,然後重定向到其他行動 例:

$_SESSION['msg'] = 'Your account has been created, please log in'; 
  • 在屏幕上,檢查是否設置了會話變量,然後打印存儲在會話變量中的消息並清除它。

     <?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

啊右會話變量,這使得更有意義。我應該設置一個Flash會話變量嗎? – n0pe 2013-04-10 15:27:13

+0

是的,你應該這樣做。 – 2013-04-10 16:12:32

+0

FuelPHP不使用PHP本機會話,所以默認情況下這不會傳遞到下一個請求。 aravind.udayashankara的anwser是正確的做法。 – WanWizard 2013-04-11 10:41:01

相關問題