首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >500(内部服务器错误) - 用户注册系统 - Laravel

500(内部服务器错误) - 用户注册系统 - Laravel
EN

Stack Overflow用户
提问于 2019-08-05 05:53:21
回答 1查看 0关注 0票数 0

所以,基本上我试图在Laravel中创建一个用户注册系统。注册表单验证效果很好,但在验证通过后我无法插入数据。相反,我得到了这个错误。任何帮助,将不胜感激。谢谢!

我试图使用查询构建器来插入数据。不幸的是,它仍然无效。

寄存器的script.js

代码语言:javascript
复制
$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});

$(document).ready(function () {
    $('#btnRegister').click(function (e) {
        e.preventDefault();
        $.ajax({
            url: "/validate-register",
            type: "post",
            data: {
                email: $('#exampleInputEmail1').val(),
                username: $('#exampleInputUsername1').val(),
                password: $('#exampleInputPassword1').val(),
                confirmPassword: $('#exampleInputConfPassword1').val()
            },
            error: function (data) {
                var errMsg = "";
                var response = JSON.parse(data.responseText);
                Object.keys(response.errors).forEach(function(k){
                    errMsg += '<li>' + response.errors[k] + '</li>'
                }) ;
                $('body').css({'overflow': 'visible'});
                $('.alert').css({'display': 'block'});
                $('.alert-danger').html(errMsg);
            },
            success:function(data){
                window.location.href = '/';
            }
        });
    });
});

寄存器Controller.php这样

代码语言:javascript
复制
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\DB;
use App\UserModel;

class RegisterController extends Controller
{
    public function Index(){
        return view('register');
    }

    public function ValidateRegister(Request $req){

        $validatedData = $req->validate([
            'email' => 'required|email',
            'username' => 'required',
            'password' => 'required|min:6',
            'confirmPassword' => 'required|same:password'
        ]);   
        if(!$validatedData->fails())
            insertNewUser($validatedData['email'],$validatedData['username'],Hash::make($validatedData['password']));
    }

    public function insertNewUser($email, $username, $password){        
        DB::table('users')->insert([
            'email' => $email,
            'username' => $username,
            'password' => $password
        ]);

        return response()->json(['response' => 'success']);
    }
}

错误消息:

代码语言:javascript
复制
POST http://127.0.0.1:8000/validate-register 500 (Internal Server Error)

Uncaught TypeError: Cannot convert undefined or null to object
    at Function.keys (<anonymous>)
    at Object.error (register-script.js:22)
    at u (app.js:1)
    at Object.fireWith [as rejectWith] (app.js:1)
    at C (app.js:1)
    at XMLHttpRequest.<anonymous> (app.js:1)
EN

Stack Overflow用户

发布于 2019-08-05 15:03:22

我没有尝试,但我认为当你使用$request->validate([rules...])它时不会返回验证器对象,而是返回已经验证为数组的字段。

所以你的控制器方法应该成为:

代码语言:javascript
复制
public function ValidateRegister(Request $req)
{
    $validatedData = $req->validate([
        'email' => 'required|email',
        'username' => 'required',
        'password' => 'required|min:6',
        'confirmPassword' => 'required|same:password'
    ]);

    return $this->insertNewUser(
        $validatedData['email'],
        $validatedData['username'],
        Hash::make($validatedData['password'])
    );
}

validate方法本身通过将错误作为响应返回来处理失败的验证

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

https://stackoverflow.com/questions/-100009108

复制
相关文章

相似问题

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