2013-04-07 53 views
1

我需要Laravel一些幫助。我想要做的是創建一個路由過濾器,它將使用從變量傳遞的指定消息重定向用戶。代碼我目前有半工作,但我不喜歡的唯一的東西是,消息被轉換爲小寫字符時,顯示在視圖上。路由與消息變量的重定向

Route::get('event/signup', array('before' => 'auth_message:You must be logged into your account to signup for the event.', 'uses' => '[email protected]')); 

Route::filter('auth_message', function($message) 
{ 
    if (!Auth::user()) 
    { 
     return Redirect::to('/')->with('errorAlert', $message); 
    } 
}); 

因此,例如,此消息「您必須登錄到您的帳戶才能註冊該活動。」在用戶重定向之後在視圖中顯示爲:「您必須登錄到您的帳戶才能註冊該活動。」是否可以保留字符大小寫?

回答

1

您正在從過濾器中獲取錯誤的參數。下面的作品就像你期望的那樣:

Route::filter('auth_message', function($route, $request, $value) 
{ 
    if (!Auth::user()) 
    { 
     return Redirect::to('/')->with('errorAlert', $value); 
    } 
}); 

Route::get('/', function(){ 
    exit(Session::get('errorAlert')); // Returns "You must be logged into your account to signup for the event." 
}); 
+0

那麼我到底怎麼用Route :: get()?我試過這個: 'Route :: get('event/signup',array(''''=>'auth_message','uses'=>'event @ signup','message'=>'test')) ;' 但是,它返回此錯誤:'Laravel \ Bundle :: {closure}()'丟失參數1' – Dutchcoffee 2013-04-07 17:38:29

+0

您不需要更改事件/註冊路由。只需將過濾器更改爲上面的代碼即可。 $ value包含您在「:」之後傳遞的值。 – Philo 2013-04-07 17:53:55

+0

好吧,所以我有這個:'Route :: get('event/signup',array('before'=>'auth_message:您必須登錄到您的帳戶才能註冊該事件。','uses'=> 'event @ signup'));'但是它仍然會拋出一個錯誤:'Laravel \ Bundle :: {closure}()'缺少參數2' – Dutchcoffee 2013-04-07 21:24:26