Laravel Scribe生成API文档时未读取FormRequest的bodyParameters内容
解决Scribe不读取FormRequest中bodyParameters配置的问题
确认Scribe版本与FormRequest方法兼容性
若使用Scribe v3.x,需确保bodyParameters()方法返回格式正确的关联数组:public function bodyParameters(): array { return [ 'customer_id' => [ 'description' => '关联的客户ID', 'example' => 123, ], 'customer_email_ids' => [ 'description' => '需要通知的客户邮箱ID列表', 'example' => [456, 789], ], ]; }若为v4.x版本,Scribe改用
fields()定义描述、examples()定义示例值:public function fields(): array { return [ 'customer_id' => '关联的客户ID', 'customer_email_ids' => '需要通知的客户邮箱ID列表', ]; } public function examples(): array { return [ 'customer_id' => 123, 'customer_email_ids' => [456, 789], ]; }检查Scribe配置是否启用FormRequest解析
打开config/scribe.php,确保extractors.requests中包含FormRequestExtractor且优先级靠前:'extractors' => [ 'requests' => [ \Knuckles\Scribe\Extracting\Extractors\FormRequestExtractor::class, // 其他提取器... ], ],若有自定义提取器排在前面,会覆盖FormRequest的配置,调整顺序即可。
清除Scribe缓存并重新生成文档
修改配置后需清除缓存再生成,避免旧数据干扰:php artisan scribe:clear php artisan scribe:generate确认API路由与FormRequest的关联
检查路由是否直接注入StoreInvoiceRequest,而非手动获取参数:// 路由定义 Route::post('/invoices', [InvoiceController::class, 'store']); // 控制器方法 public function store(StoreInvoiceRequest $request) { // 业务逻辑 }未直接注入的话,Scribe不会读取FormRequest的配置。
排查是否有其他配置覆盖参数
若控制器方法中用了@bodyParam注解,或路由通过->bodyParameters()定义了参数,这些配置会优先于FormRequest,需移除冲突内容。
内容的提问来源于stack exchange,提问作者Latheesan
相关产品推荐
相关产品推荐

