You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 11中POST请求参数丢失,控制器报错参数不足

Laravel 11 POST请求参数无法传入控制器问题

使用Laravel 11和PHP 8.3提交表单POST请求时,请求参数无法传入控制器,出现报错:

Too few arguments to function
App\Http\Controllers\SubscriberController::subscribe(), 0 passed in C:\xampp\htdocs[folder]\vendor\laravel\framework\src\Illuminate\Routing\ControllerDispatcher.php on line 46 and exactly 1 required

路由配置

Route::post('subscribe', [SubscriberController::class, 'subscribe']);

调试中的控制器代码

<?php

namespace App\Http\Controllers;

use App\Http\Requests\SubscriberRequest;
use App\Repositories\SubscriberRepository;
use Illuminate\Http\Request;

class SubscriberController extends Controller
{
    private $subscriberRepository;

    public function __construct(SubscriberRepository $subscriberRepository) {
        $this->subscriberRepository = new SubscriberRepository();
    }

    public function subscribe($request){//)SubscriberRequest $request) {
        dd($request);
        $request->telno = $this->formatTelNo($request->telno);

        $subscriber = $this->subscriberRepository->newOrUpdate($request);
    
        return redirect()->back()->with('success', 'You have successfully subscribed for updates.');
    }
}

CSRF Token获取路由

Route::get('/token', function () {
    return csrf_token(); 
});

自定义SubscriberRequest代码

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class SubscriberRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     */
    public function authorize(): bool
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
     */
    public function rules(): array
    {
        return [
            'first_name' => 'required',
            'last_name' => 'required',
            'email' => 'required|email',
            'telno' => 'required|string|minlength:10|maxlength:20',
        ];
    }
}

更新后的控制器方法

public function subscribe(SubscriberRequest $request) {
    dump("Hello");
    dd($request->validated());
    $request->telno = $this->formatTelNo($request->telno);

    $subscriber = $this->subscriberRepository->newOrUpdate($request);

    return redirect()->back()->with('success', 'You have successfully subscribed for updates.');
}

测试情况

使用Postman测试时,参数仍未传入:

  • 使用SubscriberRequest类型提示时仅返回Token,无法获取请求参数
  • 不使用类型提示时报参数错误
  • 改用Request类型提示后,仍无法正常获取请求数据

预期目标:能在调试中看到请求参数,以便完成数据插入、邮件发送等后续功能。

内容的提问来源于stack exchange,提问作者cvmflinchy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 03:26:02