2013-05-15 36 views
0

我是cakePHP的新手,並尋找一些指導。CakePHP下拉菜單顯示所有表格項目和預選記錄

我已經建立了一個數據庫,並且我已經構建了一個以前的php應用程序,我正在尋找蛋糕中的重新構建/工程師。

我在看三張表:客戶,工作和狀態。我編寫了模型/控制器/視圖來編輯工作記錄。它從客戶和作業表中取回值(使用'belongsTo'關係),並且在作業&狀態之間創建了HABTM關係,以便我可以拉取狀態名稱並將其顯示在編輯視圖中。因此,它的作用就是系統將從作業表中獲取狀態ID,然後根據status_id讓我顯示狀態名稱。

對於我的數據庫表,我有:

customers 
--------- 
id | first_name | Surname 
1   Joe   Blogs 


jobs 
----------- 
id | date  | status_id 
22 2013-08-01  1 

statuses 
------------ 
id | description 
    1  Quote Sent 
    2  Invoice 

jobs_statuses 
----------- 
id | job_id | status_id 
1   22   1 

所以,我可以得到工作視圖來顯示「報價已發送」文本框中,但我真正需要的是有一個下拉框,顯示狀態表中的所有狀態描述,以及預先選擇的作業的當前狀態。因此,在這裏,我們會在作業22的編輯視圖中預先選擇「報價已發送」的下拉列表,然後我希望能夠從下拉列表中選擇「已開票」並保存表格 - 然後相應地更新數據庫,所以當我再次呼叫作業22時,它將狀態顯示爲「已開票」。

很明顯,數據庫中還有更多的狀態和數據等等。

我真的很努力瞭解我是如何得到這個工作... :-(任何幫助非常讚賞。

我用蛋糕2.3.4 mysql數據庫

+0

歡迎來到StackOverflow,@ user2375887。 – jcwenger

+0

只是想知道;你需要一個HABTM關係的狀態?看起來你希望Job有一個* single *狀態,而不是*多個狀態*在同一時間? – thaJeztah

回答

0

你可以有一個狀態像這樣的下拉菜單(我會假設你從工作控制器召本)

$statuses = $this->Job->Status->find('list'); 
$this->set(compact('statuses')); 

並在視圖

echo $this->Form->create(); 
//etc 
echo $this->Form->input('Status'); 

心智視圖中的大寫字母和控制器中的複數形式,因爲這就是它與HABTM的關係。在文檔中,有幾個關於here的段落可以引導您(在到達「FormHelper :: inputs」之前幾乎全部關閉)。

因此,選定的狀態應該是神奇的預選。如果下拉框顯示ID,請務必更改狀態模型的displayField

+0

非常好,謝謝!它看起來像上帝一樣,所以會全力以赴。再次感謝。 – user2375887

相關問題