首页 > 社区问答列表 >Laravel 请求嵌套的父/子表单

  Laravel 请求嵌套的父/子表单

我正在使用laravel创建一个api。我已经创建了ProductRequest和ProductPriceRequest类来进行请求验证,它们按预期工作。

一个Product可以有多个ProductPrice。

现在,为了创建ProductPrice,我需要先创建一个Product,然后再创建与该Product相关联的ProductPrice


//Create product
POST->http://127.0.0.1:8000/api/v1/products
{
 "name":"product1"
}
//Create productprice associated with product
Post->http://127.0.0.1:8000/api/v1/products/69081258758830188/productprices
{
 "name":"productprice1"
}

但是我想在创建产品时启用ProductPrice的创建

//Create product+productprice
POST->http://127.0.0.1:8000/api/v1/products
{
 "name": "prod2",
 "productPrices": [
  {
   "name": "pp1"
  },
  {
   "name": "pp2"
  }
 ]
}

由于我已经拥有(并需要)一个ProductPriceRequest,如果请求中有一个ProductPrice,我如何在ProductRequest中使用ProductPriceRequest类来验证ProductPrice。

我是laravel(我使用的是版本10)和php的新手,没有找到任何关于这种情况的示例


P粉446800329
P粉446800329

  • P粉129275658
  • P粉129275658   采纳为最佳   2023-08-09 11:40:37 1楼

    个人而言,在另一个ProductPriceRequest类中,我不会尝试重用相同的规则;而对于ProductRequest,我只会做一些类似的操作

    'prices.*.name' => ['required', 'min:3'],
    'prices.*.id' => ['numeric'],

    或者无论你的规则是什么。

    从技术上讲,如果你确实想要使用相同的规则,你可以将这些重复的规则放在ProductPrice模型中,然后在两个FormRequest文件中使用它们,但我不确定是否还会有其他冲突,因为在这里,数据是以数组的形式存在,而在另一种情况下(你没有展示在其他地方你使用和需要ProductPriceRequest),可能会传递另一种用于验证的结构

    +0 添加回复