Home > Backend Development > PHP Tutorial > YII,Model里面取Form提交的值

YII,Model里面取Form提交的值

WBOY
Release: 2016-06-23 14:01:03
Original
911 people have browsed it

我有一个登录页面,用的是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));    }
Copy after login

我的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;        }    }}
Copy after login


但是我在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给传递进去

Related labels:
yii
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template