2012-07-24 47 views
2

在我的項目中,我使用的框架爲Symfony2。我想寫一個php函數,如果條件失敗,它會重定向到默認頁面。所以我的功能就是這樣。symfony在函數中重定向

public function validate($value){ 
    if($value==null){ 
     return $this->redirect(
      $this->generateUrl('home_page', array("message"=>"")) 
     ); 
    } 
} 

我打電話這樣的功能。

$this->validate($value); 

問題是重定向不會發生。
請大家,幫幫我。我不知道它爲什麼不重定向。

$response = $this->validate($value); 

if ($response instanceof \Symfony\Component\HttpFoundation\Response) { 
    return $response; 
} 

回來,你可以拋出一個自定義的重定向例外,寫這將創建一個重定向響應監聽器的響應相反的: 感謝

+0

此功能是否在您的控制器中? – Chopchop 2012-07-24 09:08:43

+0

是的,它在控制器中。 – 2012-07-24 09:54:12

回答

8

你不得不這樣稱呼它。

+0

非常感謝Jakub,它的工作! – 2012-07-25 10:33:00

1

爲了重定向,調用動作應該返回一個重定向響應。意思是,你應該返回validate()的回報。

return $this->validate($value); 
+1

你必須檢查返回的內容。如果validate()不返回任何你不想中斷但繼續執行你的控制器的代碼。 – 2012-07-25 11:07:46

+1

@Jakub Zalas啊是的,你說得對。我的錯。 :$我太專注於爲什麼代碼沒有重定向。 +1給你 – 2012-07-25 12:14:24