我使用带有嵌套控制器的API资源,我的URL如下所示:

GET /api/projects
POST /api/projects
...
GET /api/projects/:uuid/employees
POST /api/projects/:uuid/employees

我还使用请求保存每个端点的数据(也用于验证).

问题是如何发布数据以保存新员工(姓名、邮箱等),并从URL验证和保存project_id的值?

请求规则:

public function rules(): array
{
    return [
        'project_id' => ['required'],
        'name' => ['required', 'max:30'],
        'email' => ...,
    ];
}

我发布的数据只有nameemail的值,我想从URL获取/设置project_id的值,这是可能的吗?

推荐答案

你可以用prepareForValidation

protected function prepareForValidation() {
  return $this->merge([
    'project_id' => request()->route('uuid'), 
  ]);
}

Laravel相关问答推荐

如何使中继器项目计数动态Laravel Filament V3?

拉威尔望远镜没有显示请求细节

我应该如何使用遵循依赖反转原则的工厂方法设计模式

用Laravel Filament创建变形组件

Laravel本地化错误:"setlocale():参数#1($category)的类型必须是int,给定的是Illuminate\Http\Request"

如何使用 laravel 更新单个值

前端和管理员分开时未加载laravel 9中间件

将数据从控制器传递到 Laravel 中的视图

如何获得每种类型的总和

Laravel 连接表

如何通过一个 laravel 安装处理子域

如何修复无效请求(不支持的 SSL 请求)

Laravel 5.2 中的正则表达式验证

如何使用 ajax 请求删除 laravel 5.3 中的记录?

未定义的类常量App\Providers\RouteServiceProvider::HOME

删除表后如何重新迁移laravel迁移

在Lumen框架中启用会话

你如何在 Laravel 中的每个响应上强制一个 JSON 响应?

如何使 Laravel (Blade) 文本字段只读

如何使用队列设置高、低和中优先级Electron邮件?