我正在尝试在模块内创建一个小部件,然后从模块的“外部”加载该小部件。更具体地说,我正在使用其他人编写的用户模块。我不想有一个单独的页面来显示登录表单,因此我尝试制作一个 CPortlet/widget(混淆)来显示登录表单。基本上,我已经将代码从 LoginController 移到了那个小部件中。然后我尝试在一些随机页面上显示小部件
<?php $this->widget('user.components.LoginForm'); ?>
但是,我收到一个错误
CWebApplication does not have a method named "encrypting".
在这一行的 UserIdentity 类中:
else if(Yii::app()->controller->module->encrypting($this->password)!==$user->password)
发生这种情况是因为我基本上是在尝试在应用程序而不是模块的上下文中执行此代码。因此,“Yii::app()->controller->module”技巧并没有按预期工作。
- 我究竟做错了什么:-\
- 有没有更好的方法来实现这一点。即在其他页面中显示该登录表单,这通常通过访问用户模块(用户/登录)中的登录控制器来显示,还是小部件是正确的做法?
谢谢。