【问题标题】:laravel 8 form validation stop working and throw an errorlaravel 8 表单验证停止工作并抛出错误
【发布时间】:2021-03-19 22:54:20
【问题描述】:

这是我的验证请求代码

public function signup(Request $request) {
        
        $validatedData = $request->validate([
            
            'name' => 'required',
            'email' => 'required|unique:users|max:255',
            'password' => 'required|min:6|confirmed',
        ]);

        $data = array();
        $data['name'] = $request->name;
        $data['email'] = $request->email;
        $data['password'] = Hash::make($request->password);
        
        DB::table('users')->insert($data);

        return $this->login($request);

    }

当我尝试此验证不起作用时,我该如何解决?

例如

当这个数据用于验证

        'name' = "",(empty)
        'email' = "test2@mail.com"
        'password'= "test2@mail.com"

我希望我的验证应该可以工作,但它会抛出 BadMethodCallException 错误

这是我的路线(通过 API)

<?php

Route::group([

    'middleware' => 'api',
    'prefix' => 'auth'

], function ($router) {

    Route::post('login', [App\Http\Controllers\AuthController::class, 'login']);
    Route::post('logout', [App\Http\Controllers\AuthController::class, 'logout']);
    Route::post('refresh', [App\Http\Controllers\AuthController::class, 'refresh']);
    Route::post('me', [App\Http\Controllers\AuthController::class, 'me']);


    //custom
    Route::post('signup', [App\Http\Controllers\AuthController::class, 'signup']);

});

注意:我检查了这个 VIA 邮递员

【问题讨论】:

  • “不工作” - 你是什么意思?它会抛出错误吗?请提供更多详细信息。说某事是行不通的,但不说为什么或如何不能帮助我们帮助你......
  • 只显示空白页
  • 我修改了我的问题
  • 请显示您的路线和表单谁触发了这个方法
  • 你好修改问题

标签: laravel api validation


【解决方案1】:

你可以用 laravel Validator 类做另一种方式。请在您的班级声明前添加use Validator 班级。

然后像这样创建你的函数:

public function signup(Request $request) {
    $validate = array(
        'name' => 'required',
        'email' => 'required|unique:users|max:255',
        'password' => 'required|min:6|confirmed',
);
    $validatedData = Validator::make($request->all(),$validate);
    if(!validatedData->fails()) {
      return $validatedData->errors();
    }else{
    $data = array();
    $data['name'] = $request->name;
    $data['email'] = $request->email;
    $data['password'] = Hash::make($request->password);
    
    DB::table('users')->insert($data);

    return $this->login($request);
    }

    
}

【讨论】:

  • 我认为您必须捕获验证错误并以 JSON 格式返回它-
  • 我如何用 if 来检查这个?
猜你喜欢
  • 2021-09-13
  • 2014-08-21
  • 1970-01-01
  • 2017-06-20
  • 1970-01-01
  • 1970-01-01
  • 2016-03-20
  • 2010-12-10
  • 1970-01-01
相关资源
最近更新 更多