2012-02-26 12 views
0

SELECTエレメントのデフォルト値を設定しようとしていますが、機能していません。これは私のコードです: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

'$レコード[ '録音'] [ '状態']何で動作します;'は? – Mchl

+0

varに格納されている値を確認するだけです。たとえば、数値(1,2,3,4)の代わりに「Rejected」と表示されている可能性があります。これは修正方法がわかりません。 – ReynierPM

+0

はい、しかし、彼はおそらく、現在のステータスは知りたいですか?正確な出力は何ですか?それが0であれば、問題が何であるかを知っている – mark

答えて

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')); 
} 
+0

どちらもうまくいきません、何かが本当に間違っています:( – ReynierPM

+0

デフォルトの代わりに選択したものを置き換えます(上記のコードを参照) – vicky

+0

これはうまく動作します – ReynierPM

1

私は決してデフォルト値を設定するためにビューを使用しません。 これは、ロジックの一部であり、あなたのケースでそうコントローラのアクション

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

など

する必要があります。またケーキ自体doesntのは本当にENUMをサポートすることに注意してください。あなたのアプローチにはいくつかの欠点と限界があります。 より適切で拡張可能なソリューションはhttp://www.dereuromark.de/2010/06/24/static-enums-or-semihardcoded-attributes/

+0

DB構造を変更する必要がある場合でも、私はその解決方法を試してくれて、他のアドバイスはありませんか? – ReynierPM

+0

それはdoesntの仕事で何を意味するのですか?それは10以上のアプリで完璧に動作します:)そしてセットアップが簡単です – mark

0

フォームの名前を確認してください。レコードをデフォルトにするためにレコードの名前を付ける必要があります。

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

次にコントローラで、確認してくださいあなたのレコードが正しく設定されています:あなたは、データベースから引いているレコードへのステータスのデフォルトを持っているために、あなたはこのような何かをするだろう

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

お知らせレコードとForm-> MODELNAMEの両方がどのように一致するかを示します。これは、デフォルト値が自動的に選択されるための必須項目です。それからあなたがする必要があるのは、デフォルトとして設定したいオプションの数値に#を設定するだけです。

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'])); 
+0

これはうまくいきますが、私は 'Rejected' ) – ReynierPM

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)); 
関連する問題