在CakePHP 2.0中生成简单的Select DROPCRODE时遇到问题

在CakePHP 2.0中生成简单的Select DROPCRODE时遇到问题,cakephp,cakephp-2.0,formhelper,Cakephp,Cakephp 2.0,Formhelper,我很确定我在Cake 1.3中没有这个问题,但是: 我有一个基于is_live db字段的表单输入,该字段的值为1或0 下面将创建一个正确填充的复选框: echo $this->Form->input('is_live', array('label'=>'Status')); 但是,以下内容似乎无法创建正确填充的下拉列表始终选择第一个选项,即使选择了项目并提交了表单,表单也会正确更新: echo $this->Form->input('is_live', arra

我很确定我在Cake 1.3中没有这个问题,但是:

我有一个基于is_live db字段的表单输入,该字段的值为1或0

下面将创建一个正确填充的复选框:

echo $this->Form->input('is_live', array('label'=>'Status'));
但是,以下内容似乎无法创建正确填充的下拉列表始终选择第一个选项,即使选择了项目并提交了表单,表单也会正确更新:

echo $this->Form->input('is_live', array(
    'label'=>'Status', 'type'=>'select' , 'options'=>array(1=>'Live', 0=>'Pending')
));

有什么简单的方法可以让下拉列表基于Is_live in CakePHP 2.0的值填充吗?还是有解决办法

您可以更改该字段的内容长度吗?如果可以,请将其更改为2。这将解决这个问题

ALTER TABLE `your_table` CHANGE `is_live` `is_live` TINYINT(2)  NULL  DEFAULT NULL;

我以前在使用1和0时遇到过同样的问题

我的解决方案是使用以下方法

$options = array(1=> 'Live', 0=>'Pending');

echo $this->Form->input('YourModel.is_live',
    array(
        'options' => $options, 
        'label' => 'Status', 
        'selected' => intval($defaultValue), // make sure you set a default value
    )
); 

布尔tinyint 1也很好。我想他的问题出在别的地方。你好,马克!这个解决方案对我来说很有效,但如果你在应用程序的其他地方使用复选框,显然会产生副作用。有趣的建议-做出这样的更改背后的原因是什么?@TheRunneversets它对你有效吗?我可以看到它被否决了,但使用您发布的代码对我有效。如果我的答案不够好,或者您找到了更好的解决方案,请指出。非常感谢。