Php 传递给控制器的参数1必须是\Http\Request的实例?

Php 传递给控制器的参数1必须是\Http\Request的实例?,php,validation,laravel,Php,Validation,Laravel,我对laravel很陌生,到处都搜索过,但无法修复此错误: 传递给InsertController::insert()的参数1必须是Illumb\Http\Request的实例,未给出任何实例 我试图通过传入请求方法来验证我的输入,这样我就不必为每个表单重新编写一个新的验证方法,但它似乎总是给我这个错误 <?php use Illuminate\Http\Request; use Illuminate\Routing\Controller; class InsertController

我对laravel很陌生,到处都搜索过,但无法修复此错误:

传递给InsertController::insert()的参数1必须是Illumb\Http\Request的实例,未给出任何实例

我试图通过传入请求方法来验证我的输入,这样我就不必为每个表单重新编写一个新的验证方法,但它似乎总是给我这个错误

<?php

use Illuminate\Http\Request;
use Illuminate\Routing\Controller;

class InsertController extends Controller {

    public function insert(Request $request) {
        $username = Input::get('username');
        $pw = Hash::make(Input::get('pw'));
        $email = Input::get('email');

        $this->validate($request, ['name' => 'required|unique:users', 
                            'password' => 'required|min:8|max:255',
                            'email' => 'required|email|unique:users']); 


        if(!$validator->fails()) {
            $user = DB::table('users')->insert(
            ['email' => $email, 'password' => $pw, 'name' => $username]);
        }
    }

}

它不起作用的原因是,给定的代码依赖于请求对象的注入,这是在Laravel 5中引入的,但安装的框架版本是4.2.17


要解决此问题,您可以从方法签名中删除请求对象或将Laravel更新为5。

它不起作用的原因是,给定的代码在请求对象的注入上进行了中继,该注入是在Laravel 5中引入的,但安装的框架版本是4.2.17


要解决此问题,您可以从方法签名中删除请求对象或将Laravel更新为5。

您如何调用该控制器?你能粘贴routes.php的一部分吗?@jedrzej.kurylo我在Route中编辑过,这个函数是什么,作为Route::post()的第三个参数传递给你?你使用的是哪个版本的Laravel?@jedrzej.kurylo 4.2.17,我还不确定这部分的确切含义。在我找到的每个教程中,我都在每条路线的末尾看到了函数(),您如何调用该控制器?你能粘贴routes.php的一部分吗?@jedrzej.kurylo我在Route中编辑过,这个函数是什么,作为Route::post()的第三个参数传递给你?你使用的是哪个版本的Laravel?@jedrzej.kurylo 4.2.17,我还不确定这部分的确切含义。在我找到的每个教程中,我都在每条路线的末尾看到函数()
Route::post('users', ['uses' => 'InsertController@insert', 'before' => 'csrf'], function()
{
    $users = User::all(); //call the User model for all data in users table
    return View::make('users')->with('users', $users);
});