如果我想在每次站点加载(在每个控制器中)时加载(运行)此代码,我必须将代码放在哪里?
谢谢!马丁。
首先,构建主控制器,其他的扩展它们。两种方法非常有用:before() 和 after()。通过覆盖和链接它们(super::),您将能够做到这一点。
正如 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();
}
}
然后任何扩展基类的类都可以访问基类中的变量/方法。例如:登录控制器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;
}
}