首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Yii2用户注册

Yii2用户注册
EN

Stack Overflow用户
提问于 2016-06-24 17:07:13
回答 1查看 1.9K关注 0票数 0

我使用的是yii2默认登录,如果我输入用户名和密码,它会成功登录。问题出在新用户注册上。我有这个控制器操作来注册用户名和密码。

代码语言:javascript
复制
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');
 }
    }

登录操作为:

代码语言:javascript
复制
 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是默认模型。注册表如下:

代码语言:javascript
复制
<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>

但是用户名和密码没有保存在数据库中,没有错误。它也不是重定向后,成功的registration.When我点击注册按钮,该页面就像重新加载。

EN

回答 1

Stack Overflow用户

发布于 2016-06-24 17:12:46

可能是某些验证规则不匹配

尝试在保存之前执行正确的验证

代码语言:javascript
复制
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)
    }

基于这样一个奇怪的事实,即$errors似乎不起作用(请参阅参考http://www.yiiframework.com/doc-2.0/guide-input-validation.html的文档),那么您应该从代码中删除$errors的else条件,您可以尝试

仅用于调试

代码语言:javascript
复制
$model->save(false)  

如果在这种情况下,您的数据保存在数据库中,则存在验证问题,您必须有选择地注释或删除验证规则,以查找不匹配的验证规则

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38009530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档