Yii 登录模型尝试登录用户而不是显示登录表单

Yii 登录模型尝试登录用户而不是显示登录表单,yii,Yii,我已将另一个项目中的整个代码移植到我的新Yii 1.1.12项目中。这是原版的,任何东西都很好用 在我的新项目中(尽管我在登录区域中没有触及任何内容),任何显示登录表单的尝试(或要求用户登录的任何操作的请求)都以尝试实际登录用户的loginmodel结束 当我请求任何需要登录的操作时,Yii“internal”会将我重定向到主站点控制器的actionLogin。但是,没有呈现登录表单,我得到了一个有点奇怪的异常: CDbException: CDbCommand failed to execut

我已将另一个项目中的整个代码移植到我的新
Yii 1.1.12
项目中。这是原版的,任何东西都很好用

在我的新项目中(尽管我在登录区域中没有触及任何内容),任何显示登录表单的尝试(或要求用户登录的任何操作的请求)都以尝试实际登录用户的
login
model结束

当我请求任何需要登录的操作时,Yii“internal”会将我重定向到主
站点
控制器的
actionLogin
。但是,没有呈现登录表单,我得到了一个有点奇怪的异常:

CDbException: CDbCommand failed to execute the SQL statement: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'login' in 'where clause'. The SQL statement executed was: SELECT * FROM `users` `t` WHERE LOWER(login)=? LIMIT 1
一些内部测试证明,my
loginAction()的第一行在my
站点
控制器中:

if(Yii::app()->user->isGuest)
{
    $model = new Login;
    ...
}
导致实际尝试登录用户。有人知道这是怎么回事吗

我从来没有遇到过这样的情况,在我的任何Yii项目中,
Login
模型的创建实际上尝试登录用户,当
$\u POST
为空时(从未呈现过表单,因此从未提交过POST数据),当用户代码未执行
$model->Login()

编辑:这是一种标准的Yii方法(尽管对我来说仍然很神秘),所以我问了这个问题


有人能在这里提供帮助或建议吗,可能有什么问题,或者我遗漏了什么?

由于我的模型的
名称
登录名
,那么其中定义的
登录()方法将PHP用作构造函数

这与Yii无关,这是一个基本的PHP行为,继承自旧的、糟糕的PHP4,并且仅在使用名称空间类的情况下,从php5.3.3开始被取消种族划分。当类定义不使用名称空间时,此行为(将构造函数定义为与类同名的函数)仍然有效


有关更多详细信息,请参阅或参阅PHP手册。

好的,您已从另一个项目移植了可能已更改应用程序流程的完整代码。能否发布site controller登录操作?您需要向我们展示更多代码。特别是在设置post时调用login方法的控制器。@RafayZiaMir在第二个代码示例中,上面的代码实际上是我的控制器及其
actionLogin()
action的一部分,正如我在上面解释的。这两个项目中的两个操作(原始和移植的)都包含完全相同的代码,就像在每个自动生成的Yii应用程序中一样,并且自生成以来从未更改过。除了呈现的代码之外,只有标准的AJAX回复(
if(isset($\u POST['AJAX'])
),标准的登录表单处理(
$model->validate()&&&$model->login()
)和登录表单呈现。没有什么不寻常的,所有生成的内容都是一样的。只有流/处理是奇怪的。这个问题缩小到问题:为什么
login::login()
方法在
登录时启动
模型创建?如果您无需登录(没有用户名和密码,
$\u POST
为空,没有提交数据,甚至没有呈现表单),那么尝试登录用户背后的原因或逻辑是什么因此,这是一个次要问题,可以通过向数据库中添加
login
列或重写
login()
authenticate()
方法(按计划)轻松解决。但是,问题仍然存在:为什么Yii在创建登录模型时尝试登录用户?更多信息,请参阅。