2016-06-24 2 views
0

Я использую yii2 default login, который успешно входит в систему, если я вводил 'admin' для имени пользователя и пароля. Проблема заключается в регистрации нового пользователя. У меня есть это действие контроллера для регистрации имени пользователя и пароля.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, 
     ]); 
    } 

user и loginform являются модели по умолчанию. Регистрационная форма:

<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) то вы должны удалить из кода на еще за $ отелю об ошибках, и вы можете попробовать
для отладки только

$model->save(false) 

, если в этом случае ваши данные будут сохранены в db, тогда у вас есть проблема проверки, и вы должны выборочно прокомментировать или удалить правило valdation для поиска того, что не соответствует

+0

'неизвестное свойство: app \ models \ User: : ошибки отображаются – micky

Смежные вопросы