2

メールで送信されたアクティベーション リンクをクリックしてユーザーをアクティベートする際に問題が発生しています。

http://www.example.com/devtest/index.php?r=user/check&activationcode=bc74873d0e3f684d3e6b99a36169a793ee688406などのアクティベーション リンクをクリックすると、データベースを更新せずにログイン ページにリダイレクトされます。

ユーザーディレクトリにあるビューファイルcheck.phpに対して、次のコントローラーコードが機能していないと思います。これが私のコードです-

ユーザーコントローラー.php:

public function actionCheck(){$activationcode = Yii::app()->request->getQuery('activationcode');
if(isset($activationcode))
{
  $model = User::model()->findByAttributes(array('activationcode'=>$activationcode));

  if($model !== null)
  {            
    $model->status=1;
    $model->save();Yii::app()->user->setFlash('check','Thank you for register with us');
    $this->refresh();
  }
}

$this->render('check',array('model'=>$model));

}

ファイル check.php を表示します。

 <?php if(Yii::app()->user->hasFlash('check')): ?>
 <div class="flash-success">
   <?php echo Yii::app()->user->getFlash('check'); ?>
 </div>
<?php endif; ?>

UserController で GET URL アクションを処理する方法がわかりません。また、accessRules に「チェック」という単語を追加して既にテストしましたが、ブラウザはページが正しくリダイレ​​クトされないことを示しています。

public function accessRules()
    {
            return array(
                    array('allow',  // allow all users to perform 'index' and 'view' actions
                            'actions'=>array('index','create','view','captcha'),
                            'users'=>array('*'),
                    ),);}

何か案が?私の問題についての解決策を教えてください。

ありがとう、MRS

4

2 に答える 2

0

モデルがnullだと思うので、データベースを更新できません。

また、あなたの行動はこのようであるべきだと思います

public function actionCheck(){$activationcode = null){ 
if(!is_null($activationcode))
{
   $model = User::model()->findByAttributes(array('activationcode'=>$activationcode));

if($model){            
    $model->status=1;
    if($model->save())
       Yii::app()->user->setFlash('check','Thank you for register with us');
    $this->refresh();
}else{
  Yii::app()->user->setFlash('check','Something is wrong!');
}
}
    $this->render('check',array('model'=>$model));
}
于 2012-09-07T17:57:50.457 に答える
0

accessControl に Check アクションを追加しておらず、すべてのユーザーに許可していないと思います。ここに accessRules 配列コードを貼り付けていただけますか?

    public function filters() {
    return array(
            'accessControl', 
            );
}

public function accessRules() {
    return array(
        array('allow', // allow all users to perform 
            'actions'=>array('check'),
                'users'=>array('*'),
                ),
于 2012-10-24T11:27:53.697 に答える