4

一般的なジャンル別にグループ化されたさまざまな映画ジャンルの選択ボックスを表示する必要があります。そのために、CakePHP のデフォルト メソッドを使用していますfind('list',...)

映画ジャンルのデータベース テーブルは次のように作成されます。

|_id_|_name_________|_general_genre_|
|  1 | Action       | Action        |
|  2 | Martial arts | Action        |
| .. | ............ | ............. |

問題は、グループがデータと同じ名前 (例: "Action") を持っている場合、グループ名の利点としてデータが表示されないことです。

したがって、私の選択ボックスは次のようになります。

Select a genre
  - Action
    - Martial arts
    - ...

そして、私が欲しいのは:

Select a genre
  - Action
    - Action
    - Martial arts
    - ...

もちろん、グループ項目を選択することはできません。

前もって感謝します!

4

3 に答える 3

2

わかりました、さらに調査した後、最終的に答えが得られました。Html->input()メソッドに追加する属性です。この属性はshowParents. したがって、グループで選択ボックスを作成し、このグループ内にこのグループと同じ名前のアイテムを含める場合は、次のようにする必要があります。

  • グループのリストを選択します。

    $options = $this->TableName->find('list', array(
       'fields' => array('id', 'name', 'group_name')
    ));
    
  • 選択入力を表示します。

    $this->Html->input('InputId', array(
       'type' => 'select',
       'options' => $options,
       'showParents' => true
    ));
    

これが役立つことを願っています;)

于 2013-01-18T13:51:48.983 に答える
1

これは予期される動作です。showParentsフォーム要素を生成するときにオプションを使用します。APIには 例もあります。この場合、チェックに失敗しました:)

于 2013-01-18T14:52:15.393 に答える
0

オプションを設定することで、 が返すデフォルトのフィールドfind('list')(主キーと displayField) を独自のフィールドでオーバーライドでき$options['fields']ます。必要に応じて、これらは 2 つ以上のフィールドにすることができます。これは、必要なものに近づくはずです。

$this->Genre->find('list', array(
    'fields' => array('id', 'name', 'general_genre')
));

これは次のような配列を返します。

'Action' => 
    1 => 'Action'
    2 => 'Martial arts'

ドロップダウンでそれを使用できるはずです。

于 2013-01-18T11:33:03.753 に答える