首頁  >  問答  >  主體

無法將 Illuminate\Validation\Validator 類型的物件用作數組

在測試 api/register 的 post 請求時,我在 postman 中收到以下錯誤。

「錯誤:無法使用 IlluminateValidationValidator 類型的物件作為檔案 C:Usersazzamlaravel-appazzamnewapiappHttpControllersAuthController.php 第 25 行中的陣列」

這是我的 AuthController 程式碼:

<?php

namespace AppHttpControllers;

use IlluminateHttpRequest;
use IlluminateSupportFacadesAuth;
use IlluminateSupportFacadesValidator;
use AppModelsUser;
use LaravelSanctumPersonalAccessToken;

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 變數?謝謝。

P粉930448030P粉930448030335 天前485

全部回覆(1)我來回復

  • P粉427877676

    P粉4278776762023-12-13 10:50:24

    $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
  • 取消回覆