2012-07-30 117 views
0

我想從數據庫表中獲取兩個字段值並將它們組合在一起並將其用作標籤中的顯示文本。另外我想在表格中創建另一個字段值作爲標籤ID。cakephp中的自定義標籤文本

AgeCat表存儲不同的年齡類別。表定義爲

age_cat_id ---> primary key 
range_start 
range_end 

如:

age_cat_id=>1 
range_start=>18 
range_end=>24 

我想是有標籤的文本設置爲 ' 「RANGE_START」 到 「RANGE_END」' 例如:'18到24'

,標籤ID爲age_cat_id。

什麼是正確的方式來格式化標籤文本以顯示如上?我檢索了AgeCat表的所有記錄,並使用find(all)將它們存儲在字符串數組($ agecats)中。我無法從該數組中檢索值,然後按照上述方式對其進行格式設置並將其設置爲標籤文本。請建議是否有更好的方法來做到這一點。

這樣做的目的是以'range_start到range_end'的格式顯示AgeCat表格中的每個記錄,但將其值設置爲相應的age_cat_id。 例如:18到24是使用某個表單元素顯示的,但值應該是1.這就像有一個帶有自定義字符串的下拉列表,但每個鏈接到一個唯一值。所以一旦選擇了一個選項,值就會被傳遞,而不是字符串。

如果標籤不夠好,什麼樣的表單元素適合這個?

回答

2

虛擬領域:cakephp documentation.

public $virtualFields = array(
'cat_date' => 'CONCAT(AgeCat.range_start, " to ", AgeCat.range_end)' 
); 

P.S:根據CakePHP的約定主鍵應該被命名爲ID。

編輯:看看有:form helper

echo $this->Form->select('id', $cat_date) 

在控制器是這樣的:

$cat_date=$this->Model->find('list',array('fields'=>array('id','cat_name'))); 

與$ cat_date含在選擇所期望的值的數組。

+0

謝謝你的回答。抱歉,我無法儘快回覆您。當我這樣做時,在字段列表中出現錯誤,說明未知列「cat_date」。我現在明白虛擬領域的概念,但是這個錯誤讓我再次陷入困境。 – user1563210 2012-08-01 04:05:00

+0

如何用一個使用foreach循環的標籤實現這一點。並且還將cat_id保存爲標籤的ID。 – user1563210 2012-08-01 11:41:52