1

「製品カテゴリ」のリストを表示するドロップダウンリストがあります

問題は、同じ名前の製品カテゴリが複数あることです。

各製品カテゴリには「システム」が関連付けられているので、私の質問は、変更する方法はありますか。

echo $this->Form->input('product_cat_id');

表示Product CategoryするSystem >> Product Category

4

1 に答える 1

1

さて、私はそれを理解しました。

ビューレベルでは簡単にできなかったので、コントローラーレベルでやらなければなりませんでした。

基本的に、私は以下のように使用されるオプショングループを構築することを目指していました:

$options = array(
   'Group 1' => array(
      'Value 1' => 'Label 1',
      'Value 2' => 'Label 2'
   ),
   'Group 2' => array(
      'Value 3' => 'Label 3'
   )
);
echo $this->Form->select('field', $options);

コントローラでオプションリストを作成し、それをビューに渡すのが最善であると判断しました。

そのために、このコードをコントローラーのアクションに追加しました。

$systemCats = $this->Product->ProductCat->SystemCat->find('all');
$this->set('fieldOptions', buildFieldOptions($systemCats));

完全に関連付けられた$systemCats配列を引数として使用するbuildFieldOptionsという関数を作成しました。

function buildFieldOptions($productCats, $systemCats) {
    $optionsArray = array(); //empty options array
    foreach ($systemCats as $systemCat) {
        $productCatArray = array(); //empty product categories array
        foreach($systemCat['ProductCat'] as $productCat){  
            $productCatArray[$productCat['id']] = $productCat['title'];
            //fill product categories array
        }
        $optionsArray[$systemCat['SystemCat']['title']] = $productCatArray;
        //fill options array with system category as a key
    }
    return $optionsArray;
}

完成した1つの選択ボックスには、次のようなオプションがあります。

SystemCategory
    Product Category
    Product Category
    Product Category
SystemCategory
    Product Category
    Product Category
    Product Category

これは私のために働きます!

于 2012-07-19T14:33:46.673 に答える