ホームページ >バックエンド開発 >PHPチュートリアル >YII、モデルのフォームによって送信された値を取得します
LDAP を使用したログイン ページがあります...
コントローラー
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)); }
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; } }}
注意深く確認します...
ユーザードメインがモデルに渡されました...
しかし、モデルからコンポーネント/UserIdentityに渡すときにユーザードメイン/がありません
問題は、
CUserIdentity のコンストラクターがユーザー名、パスワード... のみを構築することです。
そのため、値を CUserIdentity に渡すことができません。
コンポーネント / UserIdentity... で別のメソッドを定義する必要があります。
userdomain を渡す必要があります。