如果我想在每次加载网站时(在每个控制器中)加载(运行)此代码,我必须放置我的代码吗?
谢谢! 马丁。
答案 0 :(得分:2)
首先,构建主控制器,其他人扩展它们。两种方法非常有用:before()和after()。通过覆盖和链接它们(超级::),你就可以做到。
答案 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;
}
}