Laravel新手求助:API测试报Validator::false方法不存在错误
Laravel注册API报错:Method Illuminate\Validation\Validator::false does not exist.
错误根源
你调用了Validator实例不存在的false()方法,Laravel中判断验证是否失败的正确方法是fails()。除此之外,你的代码还有几处其他问题,下面逐一修正:
问题点及修正方案
- 验证失败判断错误:将
$validateUser->false()改为$validateUser->fails() - 模型方法拼写错误:
User::ceate()是拼写错误,正确为User::create() - 字段赋值错误:用户创建时把邮箱赋值给了
message字段,应该改为'email' => $request->email - 密码未加密:直接存储明文密码存在安全风险,需用
Hash::make()对密码加密 - 返回变量未定义:返回的
$userInfo未初始化,需要为用户生成API Token - 门面引入错误:
use Illuminate\Support\Facades\ِAuth;中存在多余的特殊字符,需删除
修正后的完整代码
<?php namespace App\Http\Controllers\Api; use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Carbon; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Validator; class UserController extends Controller { /** * Create User * @param Request $request * @return Response */ public function createUser(Request $request) { try { $validateUser = Validator::make($request->all(), [ 'name' => 'required', 'email' => 'required|email|unique:users,email', 'password' => 'required' ]); if ($validateUser->fails()) { return response()->json([ 'status' => false, 'message' => 'validation error', 'errors' => $validateUser->errors() ], 401); } $user = User::create([ 'name' => $request->name, 'email' => $request->email, 'password' => Hash::make($request->password) ]); return response()->json([ 'status' => true, 'message' => 'User Created Successfully', 'token' => $user->createToken('API Token')->plainTextToken ], 200); } catch(\Throwable $th) { return response()->json([ 'status' => false, 'message' => $th->getMessage() ], 401); } } }
内容的提问来源于stack exchange,提问作者Neo
相关产品推荐
相关产品推荐

