我有 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 ");
}
}
Run Code Online (Sandbox Code Playgroud)
TEST2Controller:
namespace Modcont\Controller;
class Test2Controller extends BaseController
{
public $prefix;
function initialize()
{
$this->prefix = 'your name is';
}
function dotestAction($name)
{
return $this->prefix.' : '.$name;
}
}
Run Code Online (Sandbox Code Playgroud)
Phalcon 提供了两种初始化控制器的方式,分别是initialize和onContruct方法。这两种方法的基本区别在于,只有在框架创建控制器以继续执行操作时initialize才会调用。由于您实例化了一个控制器对象ad-hoc,不会被调用,只会被调用。所以你需要把你的初始化逻辑放在那里:initializeonConstruct
function onConstruct()
{
$this->prefix = 'your name is';
}
Run Code Online (Sandbox Code Playgroud)
此外,在控制器实现本地构造不鼓励,但如果你这样做,一定要调用父类的构造函数在自己的构造函数:parent::__construct();。
所有这些信息都可以在 Docs 中找到。
| 归档时间: |
|
| 查看次数: |
3958 次 |
| 最近记录: |