【问题标题】:Phalcon Initialize() is not workingPhalcon Initialize() 不工作
【发布时间】:2014-04-14 15:32:59
【问题描述】:

我有 2 个控制器,TEST1ControllerTEST2Controller

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

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

但是当我从TEST1Controller 调用TEST2Controller 方法时,似乎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; 
    } 

}

【问题讨论】:

    标签: phalcon


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多