我需要一份员工清单,但是,年龄信息也是如此(列),换句话说:
<option value="id" data-age="age">Name</option>
我怎样才能在CakePHP中做到这一点?只有一个foreach?例如:
foreach ($employees as $emp) { ?>
<option
value="<?php echo $emp['Employee']['id'] ?>"
data-age="<?php echo $emp['Employee']['age'] ?>">
<?php echo $emp['Employee']['name'] ?>
</option>
<?php } ?>
而且,我怎样才能保持CakePHP生成name/id
?
答案 0 :(得分:6)
如果您正在使用Cake 2.x,那么您可以让FormHelper
为您执行此操作,您只需要正确格式化选项数据,并且正确地指的是一个至少包含数组的数组name
元素文本和value
属性的option
和id
键,所有其他条目将映射为将键用作属性名称的属性,以及值作为属性值。
https://github.com/cakephp/cakephp/blob/2.0.2/lib/Cake/View/Helper/FormHelper.php#L2325
这是一个未经测试的例子。选项数据应如下所示:
$options = array
(
array
(
'name' => 'employee-a',
'value' => 1,
'data-age' => 20,
),
array
(
'name' => 'employee-b',
'value' => 2,
'data-age' => 30,
),
array
(
'name' => 'employee-c',
'value' => 3,
'data-age' => 40,
),
);
然后将其传递给创建select
元素的表单助手:
echo $this->Form->input('employee_id', array('type' => 'select', 'options' => $options));
这应生成以下HTML:
<select id="ModelEmployeeId" name="data[Model][employee_id]">
<option value="1" data-age="20">employee-a</option>
<option value="2" data-age="30">employee-b</option>
<option value="3" data-age="40">employee-c</option>
</select>