Home > Software design >  My Laravel Controller function is not executed when adding custom request
My Laravel Controller function is not executed when adding custom request

Time:07-10

I am new to Laravel. I decide to apply my understanding on Laravel to create a simple registration API.

This API will receive three data which are name, email, and password. These input data will be validated inside the Request file. But I found that, if I use the RegisterUserRequest $request inside my Controller file, the method inside controller file is not executed.

Here is my AuthController file:

<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use App\Http\Requests\Auth\RegisterUserRequest;
use App\Models\User;
use Illuminate\Support\Facades\Validator;
use Illuminate\Http\Request;


class AuthController extends Controller
{
    public function register(RegisterUserRequest $request)
    {
        return response()->json([
            'message' => 'Here',
        ]);
    }
}

Here is my RegisterUserRequest file

<?php

namespace App\Http\Requests\Auth;

use Illuminate\Foundation\Http\FormRequest;

class RegisterUserRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return false;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array<string, mixed>
     */
    public function rules()
    {
        return [
            'name' => 'required',
            'email' => 'required|email',
            'password' => 'required',
        ];
    }
}

Here is my route

Route::group(['namespace' => 'App\Http\Controllers\Api'], function () {
    Route::post('register', [AuthController::class, 'register']);
});

Here is the output show on Postman:

Output from Postman

Because suppose the output show on Postman would be:

{ "message": "Here" }

But it don't. So i think that the register method inside the AuthController is not executed.

Is anyone know the problem? Really Appreciated!!!

Thank you.

CodePudding user response:

As you defined, the user is not authorized to make this request:

public function authorize()
{
    return false;
}

Set it to true.

  • Related