2012-02-06 43 views
0

這是我的路線文件。如果找不到控制器,我該如何重定向到數組('controller'=>'pages','action'=>'display','home')?如何找到控制器未找到? (cakephp)

Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home')); 
Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display')); 
Router::connect('/login', array("controller"=>"user","action"=>"login")); 
Router::connect('/settings', array("controller"=>"user","action"=>"settings")); 
Router::connect('/logout', array("controller"=>"user","action"=>"logout")); 
Router::connect('/video', array("controller"=>"video","action"=>"index")); 
Router::connect('/video/page/*', array("controller"=>"video","action"=>"page")); 
Router::connect('/video/*', array("controller"=>"video","action"=>"view")); 
Router::connect('/upcoming', array("controller"=>"user","action"=>"upcoming")); 
+0

當我去這個頁面。 http://example.com/cakephp/controller_that_doesnt_exists – Vizualni 2012-02-06 21:17:16

+1

請在相似的問題上尋找答案: http://stackoverflow.com/questions/4108382/cakephp-redirecting-all-404-errors-to-the-homepage/ 10669893#10669893 – trante 2012-05-20 00:36:47

回答

1

這是非常簡單的。創建app_error.php文件在/ app目錄,

一旦做到這一點,把下面的(只是你會爲app_model.phpapp_controller.php的方式):

<?php 
class AppError extends ErrorHandler { 


    function missingController($params) { 
     extract($params, EXTR_OVERWRITE); 

     $this->controller->redirect('/'); 
    }  


} 

現在,這應該解決您的問題。如果你需要調用組件和beforeFilters/Renders,你可以從構造函數中調用它們。

+0

不工作..... – Confused 2014-08-07 18:24:45

+0

不工作的是什麼?什麼版本的蛋糕? – 2014-08-08 07:01:15

1

您應該創建一個自定義異常處理程序,將用戶重定向到主頁。有關此主題,請參閱documentation

大概是這樣的(未經測試,但只給你一個想法從這裏到去):

class AppErrorHandler { 
    public static function handleException($error) { 
     if ($error instanceof MissingControllerException) { 
      // Redirect home, $this->redirect will probably not work, 
      // since the Error Handler doesn't extend the AppController. 
      header('Location: /'); 
      exit; 
     } 
    } 
} 
1

你需要的是here整齊,偉大的工作,解釋>希望這會幫助你。

OR

轉到HERE