1

我正在建立一个平台,访问者可以在该平台上填写表格以请求各个市场的产品和服务报价。

示例:访客 John Doe 希望在他的屋顶上安装太阳能电池板。他访问我们的网站,选择他的类别(太阳能电池板)并填写表格。然后,他的联系方式将发送给我们所有的太阳能电池板供应商。

可以请求报价的所有类别都存储在一个category表中:

id | name
-------------------
1  | solar panels
2  | car rental

每个类别都有 2 个表格需要填写:

  1. 一份表格,其中包含访问者的详细联系方式以及他们希望收到哪个类别的报价。此表单对每个类别都有相同的字段,并存储在一个inquiry表中:

    id | fk_id_category | name     | email              | Region
    ----------------------------------------------------------
    1  | 1              | John Doe | johndoe@gmail.com  | New York
    2  | 2              | Jane Doe | janedoe@gmail.com  | California
    
  2. 包含与该类别相关的特定问题的表格。这些存储在一个category_field表中:

    id | fk_id_category | label
    ---------------------------------------------------------------
    1  | 1              | What type of roof do you have?
    2  | 2              | What type of car do you want to rent?
    3  | 2              | For how long do you want to rent the car?
    

    这些问题的答案存储在一个inquiry_detail表中:

    id | fk_id_inquiry | fk_id_category_field | answer
    ---------------------------------------------------------------
    1  | 1             | 1                    | A flat roof
    2  | 2             | 2                    | An SUV
    3  | 2             | 3                    | One week
    

我正在使用 Doctrine 1.2.4,我想了解如何保存特定类别的答案(inquiry_detail表中的答案)。

目前我有以下解决方案,但我认为应该有更好的方法:将name每个表单元素的属性设置为表id中其对应记录的属性category_field

<label for="2">What type of car do you want to rent?</label>
<input type="text" name="2" />
<label for="3">For how long do you want to rent the car?</label>
<input type="text" name="3" />

提交表单后,我们遍历$_POST数组并inquiry_detail为每个元素创建一个新记录(暂时不要介意fk_id_inquiry)。

foreach($_POST as $key => $value) {
    $inquiryDetail = new Model_Inquiry_Detail();

    $inquiryDetail['fk_id_category_field']   = $key;
    $inquiryDetail['answer']                 = $value;

    $inquiryDetail->save();
}
4

0 回答 0