O que há de errado com meu código? Recebo ArgumentCountError
com mensagem
Poucos argumentos para a função App\Http\Controllers\UserController::add(), 0 passado
Função do controlador
public function add($request){
$request->validate([
'name' => 'required|string|max:50',
'email' => 'required|string|email|max:50|unique:tblmember,Email',
]);
$newid = DB::table('tblmember')->insertGetId([
'name' => $request->name,
'email' => $request->email,
]);
return response()->json(['message' => 'Member added successfully', 'MemberID' => $newid], 201);
}
Rota
Route::post('/users/add', [UserController::class, 'add'])->name('users.add');
Ajax
$.ajax({
url: "/users/add",
type: "POST",
data: {
name : name,
email : email,
_token : "{{ csrf_token() }}"
},
success: function(response) {
...
},
error: function(xhr) {
...
}
}
});
Seu problema é que o método add() está esperando um parâmetro (
$request
), mas o Laravel não o injeta automaticamente, a menos que seu tipo seja sugerido comoRequest
.Modifique seu método de controlador para aceitar a solicitação corretamente:
Por quê?
$request
não foi reconhecido como uma instância deRequest
, então o Laravel não o passou automaticamente. AdicionarRequest $request
garante que o Laravel injete o objeto de solicitação corretamente. Agora, sua solicitação AJAX deve funcionar conforme o esperado. 🚀