2011-06-17 27 views
0

我想從一個簡單的表中檢索數據並填充選擇字段窗體。有兩個表,首字母縮略詞和主題。在CakePHP中選擇字段檢索數據

目前我有:
在我acronyms_controller(方法Add()):

$topics = $this->Acronym->Topic->find('list'); 
$this->set(compact('topics')); 

在我的縮寫(模型):

var $belongsTo = array(
     'Topic' => array(
      'className' => 'Topic', 
      'foreignKey' => 'topic_id', 
      'conditions' => '', 
      'fields' => '', 
      'order' => '' 
     ) 
    ); 

在我的主題模式:

var $hasMany = array(
     'Acronym' => array(
      'className' => 'Acronym', 
      'foreignKey' => 'topic_id', 
      'dependent' => false, 
      'conditions' => '', 
      'fields' => '', 
      'order' => '', 
      'limit' => '', 
      'offset' => '', 
      'exclusive' => '', 
      'finderQuery' => '', 
      'counterQuery' => '' 
     ) 
    ); 

在我的首字母縮寫添加視圖:

<?php echo $this->Form->input('topic_id'); ?> 

我不知道爲什麼這不起作用(它不會檢索選擇字段中的主題數據)。我下載了一個簡單的應用程序,並進行了相同的練習,結果非常好。我不知道我錯過了什麼。

如果我有你的幫助,我將不勝感激。

+0

請定義「不工作」。 – deceze 2011-06-17 03:55:49

回答

0

您的代碼看起來都是正確的。如果主題名稱未出現在選擇字段中,則可能是因爲數據庫表中的字段不正確。

對於Cake以自動方式流行選擇主題名稱列表,您的Topic表中必須有一個字段名爲name

否則,在你的控制器中一定有其他東西與此衝突,但我需要看到整個add()方法來確定這一點。

+0

我的表格「主題」中有一個名爲「name」的字段。這裏是我的add():function add(){ \t \t \t \t $ this-> layout ='default'; \t \t \t \t如果(!空($這個 - >數據)){ \t \t \t $這個 - > Acronym->創建(); \t \t \t如果($這 - > Acronym->節省($這 - >數據)){ \t \t \t \t $這 - >會話級> setFlash( '縮寫已成功刪除。', 'flash_success') ; \t \t \t \t $ this-> redirect('/ acronyms/add'); \t \t \t}其他{ \t \t \t \t $這個 - >會話級> setFlash(__('縮寫無法保存。請再試一次。',true)); \t \t \t} \t \t \t $主題= $這個 - > Acronym-> Topic->找到( '名單'); \t \t \t $ this-> set(compact('topics')); \t \t} \t} – 2011-06-17 04:52:41

+0

嗯,我仍然不知道發生了什麼事。但是,我得到了另一個類似的代碼,只是做了一些改變,現在,它是一切正常。 謝謝! 我真的很感激約瑟夫和欺騙。 – 2011-06-17 05:05:21

+0

這一切看起來都不錯。根據Cake爲$ this-> Form-> input('topic_id')生成的HTML,視圖中的輸出究竟是什麼? ?另外,如果添加debug($ topics),那麼視圖中的結果是什麼?在控制器中? – Joseph 2011-06-17 05:06:05