bugfix> laravel > 投稿

これが検証リクエストのコードです

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郵便配達員を確認してください

回答 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);
        }
        
    }
    
    

あなたの答え