我正在尝试为SELECT元素设置默认值,但它不起作用。这是我的代码:
$enum_options = array('1'=>__('None'), '2'=>__('Call for Interview'),'3'=>__('Rejected'),'4'=>__('Pending for Upcoming Oportunities'));
echo $record['Record']['status'];
echo $this->Form->input('status', array('label' => __('Status'),'options'=> $enum_options, 'default' => $record['Record']['status']));
DB中的状态字段是ENUM:
`status` enum('None','Call for Interview','Rejected','Pending for Upcoming Oportunities') NOT NULL DEFAULT 'None',
有任何帮助吗?致敬和提前感谢
答案 0 :(得分:1)
我永远不会使用视图来设置默认值。 这是逻辑的一部分,应该在控制器动作
中所以在你的情况下
if (!$this->request->isPost()) {
$this->request->data['Record']['status'] = 2;
}
等
另请注意,Cake本身并不真正支持ENUM。你的方法有几个缺点和局限。 更合适和可扩展的解决方案是http://www.dereuromark.de/2010/06/24/static-enums-or-semihardcoded-attributes/
答案 1 :(得分:1)
使用“空”。这将是完美的。
$enum_options = array('1'=>'None', '2'=>'Call for Interview', '3'=>'Rejected', '4'=>'Pending for Upcoming Oportunities');
echo $this->Form->input('status', array('type'=>'select', 'label'=>'Status', 'options'=> $enum_options, 'empty'=>$record['Record']['status']));
答案 2 :(得分:1)
$enum_options = array('1'=>__('None'), '2'=>__('Call for Interview'),'3'=>__('Rejected'),'4'=>__('Pending for Upcoming Oportunities'));
if($record['Record']['status'] == 'Call for Interview'){
echo $this->Form->input('status', array('label' => __('Status'),'options'=> $enum_options, 'selected' => '2'));
}else if($record['Record']['status'] == 'Rejected'){
echo $this->Form->input('status', array('label' => __('Status'),'options'=> $enum_options, 'selected' => '3'));
}else if($record['Record']['status'] == 'Pending for Upcoming Oportunities'){
echo $this->Form->input('status', array('label' => __('Status'),'options'=> $enum_options, 'selected' => '4'));
}
答案 3 :(得分:1)
简单的2行技巧..肯定会起作用
$enum_options = array('1'=>__('None'), '2'=>__('Call for Interview'),'3'=>__('Rejected'),'4'=>__('Pending for Upcoming Oportunities'));
echo $this->Form->input('status', array('label' => __('Status'),'options'=> $enum_options, 'selected' => !empty($record['Record']['status'])?$enum_options[$record['Record']['status']]:1));
答案 4 :(得分:0)
请务必检查表单的名称。它将确定应该命名的记录以使其成为默认值。要使状态默认为您从数据库中提取的记录,您可以执行以下操作:
<?php
echo $this->Form->create('MODELNAME');
echo $this->Form->input('status', array('options'=> $enum_options));
?>
然后在控制器中,确保您的记录设置正确:
$this->request->data['MODELNAME']['status'] = #;
注意记录和Form-&gt;创建MODELNAME的匹配方式。这是必须的,以便自动选择默认值。然后,您需要做的就是将#设置为您想要设置为默认值的选项的数值。