В модуле я использовал следующие правила:
array('password', 'required','on'=>'insert,userchangepassword'),
array('password', 'compare', 'compareAttribute'=>'cpassword','on'=>'userchangepassword'),
array('cpassword', 'required','on'=>'userchangepassword'),
Здесь я хочу использовать сценарий userchangepassword
Его не запускают действие userchangepassword
Вот мой контроллер:
$model=new Users('userchangepassword');
if(isset($_POST["Users"]))
{
//print_r($_POST["Users"]);exit;
$q = 'UPDATE users SET password = "'.$_POST['Users']["password"].'"
where id = "'.Yii::app()->user->getId().'"';
$cmd = Yii::app()->db->createCommand($q);
$cmd->execute();
$this->redirect(array('users/useraccount'));
}
$this->render('userrest',array(
'model'=>$model,
));
Вам необходимо назначить значения для моделирования атрибутов и validate
правильности запроса для подтверждения ввода пользователя.
$model = new Users( 'userchangepassword' );
Обратите внимание на тот факт, что вы можете передать текущий сценарий в конструкторе только в том случае, если ваша модель является потомком CFormModel. В противном случае вам нужно явно вызвать setScenario
:
$model = new Users();
$model->setScenario( 'userchangepassword' );
if( isset( $_POST["Users"] ) ) {
$model->setAttributes( $_POST["Users"] );
if ( $model->validate() ) {
// do something
}
}