0

私のものではないテーブルからフェッチされている次の配列データがあります。

Array
(
    [0] => Array
        (
            [sys_sbu] => Array
                (
                    [sbu_id] => EO
                    [sbu_name] => Executive Officer
                )

        )

    [1] => Array
        (
            [sys_sbu] => Array
                (
                    [sbu_id] => FIN
                    [sbu_name] => Finance
                )

        )

    [2] => Array
        (
            [sys_sbu] => Array
                (
                    [sbu_id] => G01
                    [sbu_name] => TEST GROUP
                )

        )

    [3] => Array
        (
            [sys_sbu] => Array
                (
                    [sbu_id] => MAF
                    [sbu_name] => Medical Affairs
                )

        )

    [4] => Array
        (
            [sys_sbu] => Array
                (
                    [sbu_id] => PCS
                    [sbu_name] => Patient Care Services
                )

        )

    [5] => Array
        (
            [sys_sbu] => Array
                (
                    [sbu_id] => SSS
                    [sbu_name] => Strategic Support Services
                )

        )

)

基本的に、テーブルsys_sbuには 2 つの列があります。sbu_idsbu_name。私のビューで次のコードを使用しても、期待した結果が得られないようです。

echo $this->Form->input('Groups', array(
    'type'=>'select',
    'options' => $groups)
);

ここに画像の説明を入力

私がしたいのは、各selectオプションの値が になりsbu_id、選択に表示されるものが になることsbu_nameです。そのようです:

<select>
  <option value="EO">Executive Officer</option>
  <option value="FIN">Finance</option>
  <option value="etc">etc</option>
</select>

どうすればこれを達成できますか?

4

1 に答える 1

1

通常、モデル定義でとが正しく設定されている$this->YourModel->find('list')場合、 a は適切な配列を返します。displayFieldprimaryKey

何らかの理由でそうでない場合は、選択した配列を次のように手動で調整する必要があります

array(
    [id1] => name1,
    [id2] => name2,
    etc
)

ただし、find('list')を調べてください。95% のケースで、この種の「問題」が解決されるからです。 それがあなたのテーブルではないことをもう一度読んでください。あなたはまったく検索をしていないと思います。ただし、解決策は残ります。他のテーブルから取得している配列で for を実行し、前に示したように、ID をキー、名前を値として調整します。

于 2013-04-16T19:00:04.160 に答える