Kohana - 在每个页面加载(每个控制器)上运行代码

时间:2013-04-29 06:02:46

标签: kohana

如果我想在每次加载网站时(在每个控制器中)加载(运行)此代码,我必须放置我的代码吗?

谢谢! 马丁。

2 个答案:

答案 0 :(得分:2)

首先,构建主控制器,其他人扩展它们。两种方法非常有用:before()和after()。通过覆盖和链接它们(超级::),你就可以做到。

Api Controller

答案 1 :(得分:1)

正如nopnop77所说,你可以创建扩展Kohana默认控制器的基本控制器,然后在你的应用程序中扩展这个基本控制器。例如:

创建基本控制器文件application/classes/Controller/Base.php

<?php defined('SYSPATH') OR die('No Direct Script Access');

class Controller_Base extends Kohana_Controller
{

    protected $session = NULL;

    public function before()
    {
        parent::before();

        // start the session
        $this->session = Session::instance();
    }
}

然后,任何扩展基类的类都可以访问基类中的变量/方法。例如:登录控制器,例如扩展Base类的application/classes/Controller/Login.php

<?php defined('SYSPATH') OR die('No Direct Script Access');

class Controller_Login extends Controller_Base
{

    public function action_index()
    {
        // you can access the session variable here
        echo $this->session;
    }
}