【问题标题】:Argument 1 passed to controller must be an instance of Illuminate\Http\Request?传递给控制器​​的参数 1 必须是 Illuminate\Http\Request 的实例?
【发布时间】:2015-10-16 23:15:43
【问题描述】:

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

【问题讨论】:

  • 你怎么称呼那个控制器?你能粘贴你的routes.php的一部分吗?
  • @jedrzej.kurylo 我在路线中编辑
  • 作为第三个参数传递给 Route::post() 的函数是什么?
  • 你使用的是哪个版本的 Laravel?
  • @jedrzej.kurylo 4.2.17,我还不确定那部分到底是什么意思。在我找到的每个教程中,我在每条路线的末尾都看到了 function()

标签: php validation laravel


【解决方案1】:

它不起作用的原因是因为给定的代码依赖于 Request-Object 的注入,这是 Laravel 5 引入的,但安装的框架版本是 4.2.17

要解决此问题,您可以从方法签名中删除 Request-Object 或将 Laravel 更新到 5。

【讨论】:

    猜你喜欢
    • 2017-12-24
    • 2021-08-20
    • 1970-01-01
    • 2020-07-14
    • 2017-09-26
    • 2021-04-29
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    相关资源
    最近更新 更多