Kohana - 每个控制器上的一个功能

时间:2013-08-13 15:41:39

标签: web kohana

我在Kohana 3.3有一个项目。 我有很多控制器,模型等。

现在,我想添加一项功能 - 为所有用户关闭整个网站。

我可以添加功能,例如,将用户重定向到http://mypage.com/website_is_close

示例:

function check(){
    $isClose = DB::query(.....)
    if($isClose) header("Location: http://mypage.com/website_is_close");
    return false;
}

谢谢:)

2 个答案:

答案 0 :(得分:2)

Controller_Base中,所有其他控制器都从。 E.g。

文件应用程序/ classes / Controller / Base.php

class Controller_Base extends Controller_Template {

    public function before()
    {
        $isClose = DB::query(.....)
        if($isClose)
        {
            HTTP::redirect("http://mypage.com/website_is_close");
            exit ;
        }

        parent::before();
    }
}

所有其他类应该从该类扩展,例如

class Controller_Home extends Controller_Base {}

我个人也将此用于每个子目录,例如

// As all controllers in the user folder probably need to be supplied with a user anyway
class Controller_User_Base extends Controller_Base {} 

class Controller_User_Profile extends Controller_User_Base {}

答案 1 :(得分:0)

我认为一个更好的方法是添加一个"赶上所有"路线到路线列表的开头

它会捕获所有URL并指向您要创建的控制器。这比黑客攻击基础控制器要清晰得多。

这看起来如何?

Route::set('closed', '(<url>)', array('url' => '.*'))
->defaults(array(
    'controller' => 'Closed',
    'action' => 'index',
));