Предполагая, что я правильно понимаю ваш вопрос, вы хотите использовать тег optgroup ?
Я не уверен, что существует автоматический способ сделать это, когда используется только отношение ownTo . Следующее решение немного уродливо, но делает то, что вы хотите:
Контроллер:
/**
* Get all categories and subcategories and declare selectBox array
*/
$categories = $this->Subcategory->Category->find('all');
$selectBox = array();
/**
* Iterate over categories & subcategories creating a formatted
* array that works with Form->input() to create a select box with 'optgroups'
*/
foreach ($categories as $category) {
foreach ($category['Subcategory'] as $subcategory) {
$selectBox[$category['Category']['title']][$subcategory['id']] = $subcategory['title'];
}
}
$this->set('selectBox', $selectBox);
Вид:
<?php echo $this->Form->input('subcategory_id', array('options' => $selectBox)); ?>