0

嗨,我正在使用登录表单中的第三个字段,我的登录表单代码如下所示

<div class="row">
<?php echo $form->labelEx($model,'username'); ?>
<?php echo $form->textField($model,'username'); ?>
<?php echo $form->error($model,'username'); ?>
</div>

<div class="row">
    <?php echo $form->labelEx($model,'password'); ?>
    <?php echo $form->passwordField($model,'password'); ?>
    <?php echo $form->error($model,'password'); ?>

</div>

<div class="row">
    <?php   echo $form->labelEx($model,'userrole'); ?>
    <?php 
        $data = Userrole::model()->findAll();
        echo $form->dropDownList($model, 'userrole', CHtml::listData($data, 'id', 'userType'));
    ?>
    <?php echo $form->error($model,'userrole'); ?>
</div>

这里我应该传递第三个参数来验证用户,所以如何传递给 UserIdentity 类。UserIdentity 类只定义了用户名、密码属性所以它只会获取用户名和密码所以,如何获取第三个

4

1 回答 1

2

CUserIdentity 中的构造函数只是一个 setter。因此,您可以进行以下更改以将 userole 传递给 CUserIdentity

1) 更新您的表单(我假设它是 LoginForm?) public $userrole;

然后在您的身份验证方法中,更新对 UserIdentity 的调用以包含用户角色

$this->_identity=new UserIdentity($this->username,$this->password, $this->userrole);

然后在您的 UserIdentity.php 文件中,添加以下内容:

public $userrole;
public function __construct($username, $password, $userrole)
{
    $this->username = $username;
    $this->password = $password;
    $this->userrole = $userrole;
}

你可能需要稍微调整一下,但这是你需要做的传递变量的一般要点。确保更新 Form::rules() 数组,以便正确验证用户角色。

于 2013-02-16T01:06:59.503 回答