我有以下表格
articles (Article model)
- id
- topic_id
articles_topics (ArticleTopic model)
- id
当我在ArticlesController add()中时,我成功生成了一个可供选择的不同主题的选择列表,如下所示:
$this->set('topics', $this->Article->ArticleTopic->find('list'));
我的文章add.ctp视图使用以下代码显示填充的选择列表:
echo $this->Form->input('topic_id', array('empty' => 'Select a Topic'));
这里一切都好。我的问题与其他模型有关,例如 Sidebar 和 SidebarLocation。这些链接正确。
这些表是
sidebars (Sidebar model)
- id
- sidebar_location_id
sidebars_locations (SidebarLocation model)
- id
我尝试在SidebarsController add()中设置以下内容
$this->set('sidebar_locations', $this->Sidebar->SidebarLocation->find('list'));
$this->set('sidebarlocations', $this->Sidebar->SidebarLocation->find('list'));
$this->set('locations', $this->Sidebar->SidebarLocation->find('list'));
// I have also used compact for this
但是,侧边栏add.ctp上的选择列表未填充。它不是一个空数组。如果我打印它,它可以工作。
我再次为表单使用以下代码。
echo $this->Form->input('sidebar_location_id', array('empty' => 'Select a Location'));
我知道这个问题是因为该列的标题是“ sidebar_location_id ”。如果我将其重命名为“ location_id ”并将模型SidebarLocation.php重命名为Location.php则可以,但我不能这样做,因为有多个其他模型具有关联的位置类型模型(即:公司模型与 CompanyLocation 模型使用关联外键 company_location_id)。我需要这些单独的 SidebarLocation 和 CompanyLocation 模型来区分。
编辑:我想回答我自己的问题,我可以在我的表格中使用
echo $this->Form->input('sidebar_location_id',
array('type'=>'select','options'=> $sidebar_locations)
);
但我希望如果有人知道我可以继续使用 JUST 的方法,就像我可以使用其他模型一样
echo $this->Form->input('sidebar_location_id');