Сценарий Yii не работает при проверке модуля

0

В модуле я использовал следующие правила:

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,
));
Теги:
yii

1 ответ

2
Лучший ответ

Вам необходимо назначить значения для моделирования атрибутов и 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
    }
}
  • 0
    после выставления значения его показывает мне значение требуется
  • 0
    @pritinarang, верно, это означает, что ваша проверка не пройдена. Из вашего описания не очевидно, какие значения вы отправляете на свой контроллер. Можете ли вы var_dump ($ _POST ["Пользователи"])?
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню