我有2个控制器,TEST1Controller
和TEST2Controller
在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;
}
}
答案 0 :(得分:4)
Phalcon为控制器初始化提供了两种方法,你的是initialize
和onContruct
方法。这两种方法的基本区别在于,当框架创建控制器以继续执行操作时,initialize
被称为仅。由于您实例化控制器对象 ad-hoc ,因此不会调用initialize
,只会onConstruct
。因此,您需要将初始化逻辑放在那里:
function onConstruct()
{
$this->prefix = 'your name is';
}
此外,不建议在控制器中实现本机构造函数,但如果这样做,请确保在您自己的构造函数中调用父构造函数:parent::__construct();
。
可以找到所有这些信息in the Docs。