最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

php - Laravel - Too few arguments 0 passed - Stack Overflow

programmeradmin0浏览0评论

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
Add a comment  | 

1 Answer 1

Reset to default 1

You 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

发布评论

评论列表(0)

  1. 暂无评论