2016-06-24 28 views
0

ユーザー名とパスワードに「admin」と入力すると正常にログインするyii2デフォルトログインを使用しています。問題は新しいユーザー登録にあります。私はユーザー名とパスワードを登録するためのこのコントローラアクションを持っています。Yii2ユーザー登録

public function actionSignup() 
    { 
     $model = new User(); 


    if(isset($_POST['User'])) 
    { 
     $model->attributes=$_POST['User']; 

     $model->setAttributes(array(
      'datereg' => time(), 
      'lastlogin' => time() 
     )); 

     if($model->save()) 
     { 

      $login=new LoginForm; 
      $login->username = $_POST['User']['username']; 
      $login->password = $_POST['User']['password']; 
      if($login->validate() && $login->login()) 
       $this->redirect('/telephone/add'); 
     } 

    } 
    else 
{ 
     return $this->render('register'); 
} 
    } 

ログインアクションは次のとおりです。

public function actionLogin() 
    { 
     if (!\Yii::$app->user->isGuest) { 
      return $this->redirect(Yii::$app->request->baseUrl.'/telephone/add'); 
     } 

     $model = new LoginForm(); 
     if ($model->load(Yii::$app->request->post()) && $model->login()) { 
      return $this->redirect(Yii::$app->request->baseUrl.'/telephone/add'); 
     } 
     return $this->render('login', [ 
      'model' => $model, 
     ]); 
    } 

userloginformは、デフォルトのモデルです。登録フォームは次のようになります。

<div class="container"> 
<div class="row"> 
<h2> New User Signup</h2><br> 
    <form class="formclass" method="POST" action="<?php echo Yii::$app->request->baseUrl;?>/telephone/signup/" role="form" id="register-form" novalidate="novalidate"> 
         <label> UserName:</label>  <input type="name" name="username" id="username" placeholder="UserName" required><br><br> 
         <label> Password: </label>  <input type="password" name="password" id="password" placeholder="Password" required><br><br> 
      <button type="submit" class="btn btn-default">Sign Up</button><BR><BR> 
          </form> 

</div> 
</div> 

ただし、ユーザー名とパスワードはデータベースに保存されず、エラーもありません。また、登録が成功した後にリダイレクトされません。私がclikサインアップボタンを押すと、ページはリロードのようです。

答えて

0

は、いくつかのバリデーションルールが

$エラーが動作しないようだという奇妙な事実に基づき

if(isset($_POST['User'])) 
{ 
    $model->attributes=$_POST['User']; 

    // validate user input and redirect to the previous page if valid 
    $model->setAttributes(array(
     'datereg' => time(), //additional data you want to insert 
     'lastlogin' => time() //additional 

    )); 
    if ($model->validate()) { 
     if($model->save()) { 

     ......your code 

     } 
    } else { 
     // validation failed: $errors is an array containing error messages 
     $errors = $model->errors; 
     var_dump($error) 
    } 

を保存する前に、適切な検証を実行してみ一致しないことができた(参照http://www.yiiframework.com/doc-2.0/guide-input-validation.htmlため、このドキュメントを参照してください)あなたは$エラーコードから、他のconditioを削除する必要がありますし、あなただけの

$model->save(false) 
をデバッグのため
を試すことができます0

この場合、データがdbに保存されている場合、検証プロブレンがあり、一致しないものを見つけるためにvaldationルールを選択的にコメントまたは削除する必要があります

+0

unknownプロパティ:app \ models \ User: :エラー 'が表示されます – micky