如何在SELECT输入字段中设置默认选项

时间:2012-02-26 17:26:28

标签: php cakephp frameworks cakephp-2.0

我正在尝试为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',

有任何帮助吗?致敬和提前感谢

5 个答案:

答案 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的匹配方式。这是必须的,以便自动选择默认值。然后,您需要做的就是将#设置为您想要设置为默认值的选项的数值。