代码之家  ›  专栏  ›  技术社区  ›  mrateb

yii2-activerecord验证与表单验证

  •  0
  • mrateb  · 技术社区  · 6 年前

    这是一个关于最佳实践的问题。一般来说,何时最好使用表单验证(即:为发送的请求创建表单)。什么时候最好依赖activerecord验证。

    我有一个模型 顾客 模型 地址 每个客户都有一个以上的地址。在创建客户的表单中,我要发送多个地址

    {
      "name": "customer",
      "vat_no": "12345678",
      "time_zone": 277,
      "category": 1,
      "email": "customer@mycustomer.com",
      "addresses":[
        {
            "street_address": "abcd...",
            "phone": 1234567
        },
        {
            "street_address": "hdhdh...",
            "phone": 2345678
        }
    ]}
    

    **这个问题的灵感来自我之前在这里提出的一个问题 Yii2 - Validating nested objects ,特别是关于这里给出的答案

    2 回复  |  直到 6 年前
        1
  •  3
  •   ldg    6 年前

    这在一定程度上取决于表单与模型的对齐程度,例如,转换表单数据需要多少,验证规则是否相同,以及需要多少模型。

    在您的例子中,如果只有两个模型,并且逻辑非常清楚,那么主模型是 顾客 其次是 地址 ,这确实是个人喜好。你可以用一个 scenario 对于表单,并在现有模型中具有特定于场景的规则 在一个专用的表单模型中。无论出于什么原因,如果表单字段与数据库有不同的验证要求,那么将它们放在单独的模型中可能会更干净。

    最后,代码必须放在某个地方,所以您需要考虑什么对您维护最有意义——例如,您希望将数据函数保留在控制器之外,那么您是想使用customercontroller还是为此目的创建一个?如果您使用表单模型,那么您可能需要一个匹配的控制器,并将主要模型集中于特定于表的crud操作。

        2
  •  0
  •   Patrick    6 年前

    将代码基的大小保持在最小值始终是最佳实践。

    因此,如果使用多个模型对您有效,不要通过添加表单模型来创建(不必要的)额外代码。