2012-07-30 112 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