不能将 Illuminate\Validation\Validator 类型的对象用作数组

问题描述 投票:0回答:2

在测试 api/register 的 post 请求时,我在 postman 中收到以下错误。

“错误:无法使用 Illuminate\Validation\Validator 类型的对象作为文件 C:\Users zzam\laravel-app zzamnewapi pp\Http\Controllers\AuthController.php 第 25 行中的数组”

这是我的 AuthController 代码:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Validator;
use App\Models\User;
use Laravel\Sanctum\PersonalAccessToken;

class AuthController extends Controller
{
    public function register(Request $request) {

    //validation field
        $validUser=Validator::make($request->all(), [
            'name'=> 'required|string',
            'email'=> 'required|email',
            'password'=> 'required|string',
        ]);
        

    //create user
        $user= User::create([
            'name'=> $validUser['name'],
            'email'=> $validUser['email'],
            'password'=> bcrypt($validUser['password']),
        ]);

    //response
        return response([ 
            'user'=> $user,
            'token'=> $user->createToken('secret')->plainTextToken,
        ], 200);
    }

    public function logout(Request $request) {

    //user
        $user= User::find(PersonalAccessToken::findToken(explode(' ',$request->header('Authorization'))[1])->tokenable_id);

    //delete token
        $user->tokens()->delete();

    //reponse
        return response([
            'message'=> 'logout success',
        ], 200);
    }

    
}

谁能告诉我错误在哪里,以及如何查看 $validUser 变量?谢谢你。

php laravel validation authentication
2个回答
0
投票

$validUser=Validator::make
是一个验证器实例。

要验证并获取经过验证的输入,您可以执行以下操作:

$validUser = $request->validate([
    'name'=> 'required|string',
    'email'=> 'required|email',
    'password'=> 'required|string',
]);

如果您必须使用手动创建的验证器实例,您可以这样做:

$validUser = Validator::make($request->all(), [
    'name'=> 'required|string',
    'email'=> 'required|email',
    'password'=> 'required|string',
])->safe()->all();

这些应该适用于 Laravel 8+


0
投票

要获取经过验证的数据,请使用

$validated = $validUser->validated();
,然后使用
$validated['name']
而不是
$validUser['name']

© www.soinside.com 2019 - 2024. All rights reserved.