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

时间:2015-07-26 20:44:13

标签: php validation laravel

我对laravel很新,并且到处搜索但无法修复此错误:

  

传递给InsertController :: insert()的参数1必须是Illuminate \ Http \ Request的实例,没有给出

我试图通过传递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]);
        }
    }

}

以下是我称之为的路线。

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);
});

1 个答案:

答案 0 :(得分:4)

它无法工作的原因是因为注入了 Request -Object的给定代码中继,它是随 Laravel 5 引入的,但已安装的框架版本 4.2.17

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