Phalcon Initialize()不起作用

时间:2014-04-14 15:32:59

标签: phalcon

我有2个控制器,TEST1ControllerTEST2Controller

TEST2Controller中,我有一个属性的initialize()函数设置值。

如果我尝试直接从浏览器访问TEST2Controller,一切都运行正常。

但是当我从TEST2Controller调用TEST1Controller方法时,似乎initialize()中没有调用TEST2Controller函数。

TEST1Controller

namespace Modcont\Controller;

use Modcont\Controller\Test2Controller;

class Test1Controller extends BaseController
{

    function gettestAction()
    {
       $t = new Test2Controller(); // calling TEST2 Controller Method Within TEST1 Controller
       echo $t->dotestAction(" MYAPP ");
    }    
}

TEST2Controller

namespace Modcont\Controller;

class Test2Controller extends BaseController
{   
    public $prefix;
    function initialize()
    {
        $this->prefix = 'your name is';
    }

    function dotestAction($name)
    {
        return $this->prefix.' : '.$name; 
    } 

}

1 个答案:

答案 0 :(得分:4)

Phalcon为控制器初始化提供了两种方法,你的是initializeonContruct方法。这两种方法的基本区别在于,当框架创建控制器以继续执行操作时,initialize被称为。由于您实例化控制器对象 ad-hoc ,因此不会调用initialize,只会onConstruct。因此,您需要将初始化逻辑放在那里:

function onConstruct()
{
    $this->prefix = 'your name is';
}

此外,不建议在控制器中实现本机构造函数,但如果这样做,请确保在您自己的构造函数中调用父构造函数:parent::__construct();

可以找到所有这些信息in the Docs