YII,Model里面取Form提交的值

WBOY
Freigeben: 2016-06-23 14:01:03
Original
873 Leute haben es durchsucht

我有一个登录页面,用的是LDAP...
Controller

public function actionLogin() {        $model = new LoginForm;        // if it is ajax validation request        if (isset($_POST['ajax']) && $_POST['ajax'] === 'LoginForm') {            echo CActiveForm::validate($model);            Yii::app()->end();        }        if (isset($_POST['LoginForm'])) {            $model->attributes = $_POST['LoginForm'];            var_dump($model->attributes); //Question One            if ($model->validate() && $model->login()) {                $this->redirect(array('form/index'));            }        }        $this->render('login', array('model' => $model));    }
Nach dem Login kopieren

我的LoginForm Model里面,我要取userdomain的值,但是一直为空
class LoginForm extends CFormModel {    public $username;    public $password;    public $userdomain;    private $_identity;        /**     * Declares the validation rules.     * The rules state that username and password are required,     * and password needs to be authenticated.     */    public function rules() {        return array(            // username and password are required            array('username', 'required', 'message' => 'Pls Key In Your NT Account.'),            array('password', 'required', 'message' => 'Pls Key In Your NT Password.'),            array('userdomain', 'required', 'message' => 'Pls Select Your Domain Host.'),            // password needs to be authenticated            array('password', 'authenticate'),        );    }    /**     * Declares attribute labels.     */    public function attributeLabels() {        return array(            'userdomain'=>'User Domain',        );    }    /**     * Authenticates the password.     * This is the 'authenticate' validator as declared in rules().     */    public function authenticate($attribute, $params) {        if (!$this->hasErrors()) {            $this->_identity = new UserIdentity($this->username, $this->password, $this->userdomain);            if (!$this->_identity->authenticate())                $this->addError('password', 'Incorrect username or password.');        }    }    /**     * Logs in the user using the given username and password in the model.     * @return boolean whether login is successful     */    public function login() {        if ($this->_identity === null) {            $this->_identity = new UserIdentity($this->username, $this->password, $this->userdomain);            $this->_identity->authenticate();        }        if ($this->_identity->errorCode === UserIdentity::ERROR_NONE) {            return true;        } else {            return false;        }    }}
Nach dem Login kopieren


但是我在Question One这里读取来是有值的
username' => string 'dasdasda' (length=8)
  'password' => string 'asdasdasd' (length=9)
  'userdomain' => string 'xxxxx' (length=5)


回复讨论(解决方案)

我再仔细查咯一下..
userdomain已经传给Model咯..
但是我从Model里面传到Component / UserIdentity的没有userdomain/

问题出在这里
CUserIdentity的构造函数
默认只有构造username,password...
所以不能传值给CUserIdentity.
必须在component / UserIdentity里面再定义一个方法..
把userdomain给传递进去

Verwandte Etiketten:
yii
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage