从CakePHP中的多个tinyint(1)字段创建下拉列表

从CakePHP中的多个tinyint(1)字段创建下拉列表,php,forms,cakephp,cakephp-1.3,Php,Forms,Cakephp,Cakephp 1.3,目前,我让我的用户选择他们希望事件重复的方式:每天、每月、每周或每年 我的数据库中有这些作为tinyint(1)字段。所以-它们作为复选框出现在页面上,我使用javascript捕捉用户单击一个复选框的时间,然后取消选中其余的复选框。没什么大不了的,而且工作正常 TLDR: 我希望能够有一个下拉列表,而不是他们。有没有办法将多个tinyint(1)字段转换为一个下拉列表?或者我只需要手动执行(HTML表单字段与数据库字段无关),然后在数据进入控制器时转换数据?在控制器中: $this->s

目前,我让我的用户选择他们希望事件重复的方式:每天、每月、每周或每年

我的数据库中有这些作为tinyint(1)字段。所以-它们作为复选框出现在页面上,我使用javascript捕捉用户单击一个复选框的时间,然后取消选中其余的复选框。没什么大不了的,而且工作正常

TLDR: 我希望能够有一个下拉列表,而不是他们。有没有办法将多个tinyint(1)字段转换为一个下拉列表?或者我只需要手动执行(HTML表单字段与数据库字段无关),然后在数据进入控制器时转换数据?

在控制器中:

$this->set('fields',Set::extract('/COLUMNS/Field', $this->Model->query("DESCRIBE {$this->Model->useTable}")));
在你看来:

$this->Form->input('yourdropdown', array('options' => $fields));

是否将其转换为单个枚举字段
重复枚举(“每日”、“每月”、“每周”、“每年”、“无”)
或类似的方法就可以了。

您可以为事件重复周期创建一个“重复”表。该表将有一个id和一个名称字段。然后,在事件字段中,创建一个重复的\u id字段。现在,您可以为重复表创建一个模型,并使用标准的CakePHP约定,通过将表上“列表”操作的结果传递到视图中来填充表单


我越是使用CakePHP,我就越觉得以这种方式创建和维护解决方案就越容易。

这似乎很棒-我以前从未使用过枚举字段。有没有关于合并到Cake中的最佳方法的想法?我从来没有使用过Cake,但创建一个下拉列表,使其值与您在enum字段中输入的名称相匹配应该不会太难。这看起来很有趣,但我并不完全明白-您能提供一点解释吗?有时最简单的解决方案是我忽略的第一个解决方案(谢谢!在我确定“最佳”答案之前,我将等待对上述问题的解释,但我已经实现了这个答案,并且它按照预期工作-谢谢!