目前我让我的用户选择他们希望重复活动的方式:每日,每月,每周或每年。
我在我的数据库中有这些tinyint(1)字段。所以 - 它们在页面上作为复选框,我在用户点击一个时使用javascript来捕获,并取消选中其余部分。没什么大不了的,工作得很好。
TLDR: 我希望能够将它们放入下拉列表中。有没有办法将多个tinyint(1)字段转换为单个下拉列表?或者我只需要手动完成(HTML表单字段与数据库字段无关),然后在数据进入控制器时进行转换?
答案 0 :(得分:1)
在您的控制器中:
$this->set('fields',Set::extract('/COLUMNS/Field', $this->Model->query("DESCRIBE {$this->Model->useTable}")));
在您看来:
$this->Form->input('yourdropdown', array('options' => $fields));
答案 1 :(得分:1)
您可以为事件重复期创建“重复”表。该表将具有id和name字段。然后,在您的事件字段中,创建一个repeating_id字段。您现在可以为重复表创建一个模型,并使用标准的CakePHP约定来填充表单,方法是将表中“list”操作的结果传递给您的视图。
我使用CakePHP的次数越多,我发现越接近解决方案就越容易创建和维护。
答案 2 :(得分:0)
将其转换为单个ENUM字段? repeats enum('daily', 'monthly', 'weekly', 'yearly', 'none')
或某些人会这样做。