0

我有以下表格

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');
4

1 回答 1

1

鲍勒莱,

您需要通过以下方式从控制器设置您的值:

$sidebarLocations = $this->Sidebar->SidebarLocation->find('list');
$this->set(compact('sidebarLocations'));

在您的 CTP 中

echo $this->Form->input('sidebar_location_id');
于 2013-05-11T20:02:10.870 回答