Как установить опцию по умолчанию в поле ввода SELECT - PullRequest
0 голосов
/ 26 февраля 2012

Я пытаюсь установить значение по умолчанию для элемента 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']));

Поле состояния в БД имеет тип ENUM:

 `status` enum('None','Call for Interview','Rejected','Pending for Upcoming Oportunities') NOT NULL DEFAULT 'None',

Любая помощь? С уважением и заранее спасибо

Ответы [ 5 ]

1 голос
/ 28 февраля 2012

Простые 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));
1 голос
/ 27 февраля 2012
$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'));
}
1 голос
/ 27 февраля 2012

используйте «пусто». это будет отлично работать.

$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']));
1 голос
/ 26 февраля 2012

Я бы никогда не использовал вид для установки значений по умолчанию. это часть логики и должно быть внутри действия контроллера

так в вашем случае

if (!$this->request->isPost()) {
    $this->request->data['Record']['status'] = 2;
}

и т.д.

Также обратите внимание, что сам Cake действительно не поддерживает ENUM. Ваш подход имеет несколько недостатков и ограничений. Более подходящее и расширяемое решение - http://www.dereuromark.de/2010/06/24/static-enums-or-semihardcoded-attributes/

0 голосов
/ 27 февраля 2012

Обязательно проверьте название вашей формы.Он определит, какая запись должна быть названа, чтобы установить ее по умолчанию.Чтобы иметь статус по умолчанию для записи, которую вы извлекаете из базы данных, вы должны сделать что-то вроде этого:

<?php
   echo $this->Form->create('MODELNAME');
   echo $this->Form->input('status', array('options'=> $enum_options));
?>

Затем в контроллере убедитесь, что ваша запись установлена ​​правильно:

$this->request->data['MODELNAME']['status'] = #;

Обратите внимание, как и запись, и форма-> создать MODELNAME совпадают.Это необходимо для автоматического выбора значения по умолчанию.Тогда все, что вам нужно сделать, это установить # в числовое значение опции, которую вы хотите установить по умолчанию.

...