我有一个继承自 CController 的 Register Controller 。
当我使用__construct()
时,它无法渲染 View 。
我尝试在函数末尾添加 parent::_construct($this->getUniqueID())
但没有成功。
当我使用init()
时,它正在工作。
知道 Yii 如何处理构造与 init 以及为什么它找不到渲染 View 吗?
编辑:
class Controller extends CController {
}
class RegisterController extends Controller{
public function init() {
.
.
.
}
}
这种情况是有效的,当用 __construct 替换 init 时,它无法渲染 View 。
最佳答案
一般来说,我不建议覆盖 Yii 中任何对象的结构。
我知道这有点违反直觉,但 Yii 围绕约定工作,这里的约定是将初始化代码放在 init() 方法中。
如果您想查看Controller's source代码你会看到我在幕后做了很多事情,它需要检查 themes and controllers folders解析 View 的路径。
这主要发生在渲染方法中。但根据经验,坚持使用 init() 方法。
只要遵守约定就可以了,我想不出有什么情况不适合在 init 方法中添加额外的逻辑。这不像您将参数传递给构造函数,是吗?
关于php - Yii 和 PHP 初始化与构造问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19357843/