YII,Model里面取Form提交的值
程序员文章站
2022-06-17 12:49:57
...
我有一个登录页面,用的是LDAP...
Controller
我的LoginForm Model里面,我要取userdomain的值,但是一直为空
但是我在Question One这里读取来是有值的
username' => string 'dasdasda' (length=8)
'password' => string 'asdasdasd' (length=9)
'userdomain' => string 'xxxxx' (length=5)
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)); }
我的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; } }}
但是我在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给传递进去