6

私は2つのモデルを持っています、CategoryそしてPoint。関連付けは次のように定義されます。

Category hasMany Point
Point belongsTo Category

データベースに追加するときに、残りのフォームデータとともにPoints、データベースが属するカテゴリをボックスから選択できるようにしたいと思います。<select>

カテゴリリストはどこに必要setですか?どうすればよいですか?そして、どのように選択ボックスを作成しますか?

私はそれがでできると思います

$form->input('categorieslist',array('type'=>'select')); //categorieslist needs
                                                        //setting somewhere.
4

2 に答える 2

7

また、少し一般化するには:

フォームヘルパーにアクセスできるビュー内

<?php
    echo $form->input( 'dataKey', array(
        'type' => 'select',
        'options' => array(
            'key1' => 'val1',
            'key2' => 'val2',
        ),
    ));
?>

上記は、2つのオプションを持つ選択入力をレンダリングします。空のオプションを最初のアイテムとして配置することもできます。trueの値を渡すと、HTMLでレンダリングされたオプションの先頭に、空白の値を持つ空のオプションが追加されます。

<?php
    echo $form->input( 'dataKey', array(
        'type' => 'select',
        'options' => array(
            'key1' => 'val1',
            'key2' => 'val2',
        ),
        'empty' => true,
    ));
?>

'empty'キーに文字列を渡して、空のオプションのキーフィールドとしてカスタムテキストを表示させることができます。

<?php
    echo $form->input( 'dataKey', array(
        'type' => 'select',
        'options' => array(
            'California' => 'CA',
            'Oregon' => 'OR',
        ),
        'empty' => 'choose a state',
    ));
?>

最後の例として、選択したキーを使用してオプションを事前に選択することもできます。値は、キーではなく、選択オプションの1つのと一致する必要があります。

<?php
    echo $form->input( 'dataKey', array(
        'type' => 'select',
        'options' => array(
            'California' => 'CA',
            'Oregon' => 'OR',
        ),
        'empty' => 'choose a state',
        'selected' => 'California',
    ));
?>

モデルから

Model->find( 'list', array( ... ));選択ボックスオプションで使用するためにフォーマットされた配列を常に返します。小文字の複数形のモデル名を持つ変数に格納されているビューにデータを渡す場合、つまり( $this->set( 'categories', $categories );、ビューでフォームヘルパーを使用し、同じモデルのデータインデックスを渡すことで、関連するモデルのドロップダウンを自動的に生成します。 「_id」の接尾辞が付いた単数形の名前。

#2でのAzizの答えは、そのautomagicがキックインした例です。

于 2010-04-20T05:26:48.533 に答える
6

コントローラ内:

$categories = $this->Point->Category->find('list');
$this->set(compact('categories'));

ビューで:

$form->input('category_id',array('type'=>'select'));
于 2010-04-17T13:20:16.120 に答える