「製品カテゴリ」のリストを表示するドロップダウンリストがあります
問題は、同じ名前の製品カテゴリが複数あることです。
各製品カテゴリには「システム」が関連付けられているので、私の質問は、変更する方法はありますか。
echo $this->Form->input('product_cat_id');
表示Product Category
するSystem >> Product Category
さて、私はそれを理解しました。
ビューレベルでは簡単にできなかったので、コントローラーレベルでやらなければなりませんでした。
基本的に、私は以下のように使用されるオプショングループを構築することを目指していました:
$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
これは私のために働きます!