这是关于最佳做法的问题。通常,何时使用表单验证更好(即:为发送的请求创建表单)。什么时候依靠ActiveRecord验证更好。
示例:我的模型客户和模型地址,其中每个客户都有多个地址。在创建Customer的表单中,我想发送多个地址
{
"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的前一个问题的启发,特别是那里给出的答案
答案 0 :(得分:3)
这部分取决于您的表单与模型的紧密程度 - 例如,您需要多少转换表单数据,验证规则是否相同以及需要多少模型。
在您的情况下,如果只有2个模型且逻辑非常清楚主要模型是客户而次要模式是地址,那么它真的很明显个人喜好。您可以对表单使用scenario,并在专用表单模型中的现有模型或中包含特定于方案的规则。如果由于某种原因,表单字段具有与数据库不同的验证要求,则将它们放在单独的模型中可能更清晰。
最终代码必须到达某个地方,所以你想要考虑什么才能让你最有意义 - 例如,你想要将数据功能保留在控制器外面,所以你也是想要使用CustomerController或为此目的创建一个?如果您使用表单模型,则可能需要匹配的控制器并使主要模型专注于特定于表的CRUD操作。
答案 1 :(得分:0)
最好将代码库的大小保持在最低限度。
因此,如果使用多个模型适合您,请不要通过添加表单模型来创建(不必要的)额外代码。