我有以下表格
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'));
这里一切都很好。我的问题是与其他模型,如补间程序栏和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 ,则可以正常工作但我无法执行此操作,因为有具有关联位置类型模型的多个其他模型(即:公司模型使用外键company_location_id与CompanyLocation模型相关联)。我需要这些单独的SidebarLocation和CompanyLocation模型来区分。
编辑:我想回答我可以在表单中使用的问题
echo $this->Form->input('sidebar_location_id',
array('type'=>'select','options'=> $sidebar_locations)
);
但我希望有人知道我可以继续使用其他模型的方式
echo $this->Form->input('sidebar_location_id');
答案 0 :(得分:1)
Bowlerae,
您需要通过以下方式设置控制器的值:
$sidebarLocations = $this->Sidebar->SidebarLocation->find('list');
$this->set(compact('sidebarLocations'));
在你的CTP中
echo $this->Form->input('sidebar_location_id');