2016-06-16 6 views
0

私はID、国の列を持つデータベーステーブルを持っています。コントローラ内部国の国名を入力してください。

私はモデルから国を取得しています:

$countries = $countries->find('list',array('fields',array('id','country'))); 
    $this->set('countries',$countries); 

CTPファイルでは、私は、オプションの値にIDを設定することで、テキスト国名のドロップダウンを取得しようとしています。

<?= $this->Form->input('Country of residence',array('type'=>'select','options'=>$countries)); ?> 

ドロップダウンには、値idとテキストとしてのidが再度設定されます。どのように私はIDの代わりにテキストとして '国'を得ることができますか?それだけで、キー/値のペアのためにあるよう

答えて

2

'list'について、あなたはフィールドアレイを提供することはできません。代わりにkeyFieldvalueFieldと指定する必要があります。また

$countries = $countries->find('list', ['keyField' => 'id', 'valueField' => 'country']); 

、あなたはあなたのためのデフォルトvalueFieldセットを持っているあなたのCountriesTableファイル内displayField()オプションを設定することができます。デフォルトkeyFieldがテーブルの主キーになります。これらのオプションは、国のテーブルのbakeモデルの場合に自動的に設定されます。そして、あなたはあなたのフォームのフィールド名にスペースを使用していないだけで

$countries = $countries->find('list'); 

と、で行ってもいいです。私は(国のためのモデル名である)国への変更$の国だ

ここ
$countries = $countries->find('list',array('fields',array('id','country'))); 
$this->set('countries',$countries); 

にこの

$countries = $this->Country->find('list', array('fields' => array('id','country'))); 
    $this->set('countries', $countries); 

あなたのコントローラの変更では

0

たら、このdocて行く

そして、ビューのctpファイルを変更する

<?php echo $this->Form->input('country_of_residence',array("options"=>$countries,'type'=>'select'));?> 
私は、フィールドcountry_of_residenceに居住の場の国を変更していますここ

<?= $this->Form->input('Country of residence',array('type'=>'select','options'=>$countries)); ?> 

から

。あなたにぴったり

その作業....

おかげ

関連する問題