1

我有一个 20 页的文档,里面有 20 个表格。它被组织成几个部分。

Section 1:
 1.1 - Form 1
 1.2 - Form 2
 1.3 - Form 3
Section 2:
 2.1 - Form 1

...etc...

我有一个看起来像这样的控制器设置(现在):

class Section extends CI_Controller {
    public function index($section_id) {
        $this->section_model->_require_valid_section($section_id);

        $data['view'] = "section/index";
        $this->load->view('app/template', $data);
    }
}

我需要为这 20 个表单构建视图。每个表格都有不同的数据。一个可能有“姓名、电子邮件、电话”,而下一个可能有“人名、设施名称、职称”,它们不相关。我认为为每个表格设置一个表格可能很愚蠢(更多表格可能随时出现),所以我可以做一个这样的表格:

Section | Key     | Value
-------------------------
1.1      name       Randolph
1.1      phone      1111111111
2.1      person     Junior
2.1      title      Playa 

我真的很想知道如何设置我的控制器来处理和路由这些表单的请求。

只为每个函数创建函数是否理想?

public function form_1_1() {
   $this->section_model->save_1_1();
}
public function form_1_2() {
   $this->section_model->save_1_2();
}

index()可以通过路由请求,call_user_func()但我不知道这是否是正确的方法。

4

2 回答 2

0

你总是可以在每个表单中放置一个隐藏的输入,然后在你的控制器函数中对隐藏字段的值进行操作。

添加到每种形式的视图中:

<input type="hidden" name="form_name" value="form_1" />

添加到控制器:

$form_submitted = $this->input->post('form_name');

然后只需使用开关或 if 来处理基于$form_submitted变量的数据。

于 2012-06-05T17:33:50.873 回答
0

这取决于您稍后需要构建数据、存储或搜索/引用的内容。

一个快速且可能的答案是像您已经使用的那样使用单个表,但参考列,如:、、、entry_id等...form_typeuseriddata

data列将存储序列化的表单元素/值,可能不太容易搜索,但提供了一种干净的方式来存储多个表单提交。

要取回数据,您可以选择所有带有用户 ID 的 entry_id 等;并将值反序列化为您可以轻松使用的数组。

您的另一个选择是获取类似 DataMapper 的东西,并处理表单之间的一对多多对多关系。

数据映射器参考: http ://datamapper.wanwizard.eu/

于 2012-06-05T17:46:41.590 回答