What's wrong with my code? I get ArgumentCountError
with message
Too few arguments to function App\Http\Controllers\UserController::add(), 0 passed
Controller's function
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);
}
Route
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) {
...
}
}
});
What's wrong with my code? I get ArgumentCountError
with message
Too few arguments to function App\Http\Controllers\UserController::add(), 0 passed
Controller's function
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);
}
Route
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) {
...
}
}
});
Share
Improve this question
edited Mar 11 at 23:28
Zaid Malek
5163 silver badges19 bronze badges
asked Mar 6 at 12:29
stackunderflowstackunderflow
1,8062 gold badges31 silver badges64 bronze badges
1
- 3 Why is there no type declaration for the parameter in your method? laravel/docs/11.x/… – C3roe Commented Mar 6 at 12:34
1 Answer
Reset to default 1You must pass the Request
class in your add
method.
So it would look like this.
use Illuminate\Http\Request;
public function add(Request $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);
}
This is mentioned here in the laravel docs.
Without the Request
class, laravel won't know how to inject your `$request` variable, and causes the error you posted.
Hope this helps,
Regards