【问题标题】:Laravel post request routeLaravel 发布请求路由
【发布时间】:2019-10-29 23:10:11
【问题描述】:

enter image description here我在php laravel中有一个如下Controller:

// .....

class RegisterController extends Controller
{
//...
//...
    protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);
    }
}

我使用以下路线:

Route::post('api/auth/register', 'Auth\RegisterController@create');

我收到以下错误:“函数 App\Http\Controllers\Auth\RegisterController::create() 的参数太少,通过了 0,预期正好 1”

我需要你的帮助将请求参数传递给我的函数(正确形成路由)

【问题讨论】:

  • 试试Auth\RegisterController@register而不是Auth\RegisterController@create
  • 您是通过路由参数还是在请求内部发送数据?

标签: laravel parameters controller routes arguments


【解决方案1】:

尝试将您的方法参数更改为Request $request

通过依赖获取当前HTTP请求的实例 注入,你应该键入提示 Illuminate\Http\Request 类 你的控制器方法。传入的请求实例将 由服务容器自动注入

并从请求字段中获取数据:

protected function create(Illuminate\Http\Request $request)
{
    return User::create([
        'name' => $request->name,
        'email' => $request->email,
        'password' => Hash::make($request->password),
    ]);
}

如果不想在方法参数中写下所有Request命名空间,在文件顶部添加:

use Illuminate\Http\Request;

然后,只需使用类的名称:

protected function create(Request $request)
{
    //...
}

【讨论】:

  • 收到以下错误:App\\Http\\Controllers\\Auth\\Request 类不存在。 (使用 http\Env\Request;)
  • 添加使用 Illuminate\Http\Request;在文件顶部
  • 或使用`create(Illuminate\Http\Request $request)`
【解决方案2】:

你可以这样做,

use Illuminate\Http\Request;

class RegisterController extends Controller
{
    protected function create(Request $request)
    {
        $data = $request->all();
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);
    }
}

【讨论】:

    猜你喜欢
    • 2015-12-30
    • 2021-12-03
    • 2021-06-10
    • 2014-06-16
    • 2019-04-19
    • 1970-01-01
    • 2018-06-03
    • 2013-09-24
    • 1970-01-01
    相关资源
    最近更新 更多