CakePHP中的自定义查找列表

时间:2013-09-05 13:25:54

标签: php cakephp

我需要一份员工清单,但是,年龄信息也是如此(列),换句话说:

<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

1 个答案:

答案 0 :(得分:6)

如果您正在使用Cake 2.x,那么您可以让FormHelper为您执行此操作,您只需要正确格式化选项数据,并且正确地指的是一个至少包含数组的数组name元素文本和value属性的optionid键,所有其他条目将映射为将键用作属性名称的属性,以及值作为属性值。

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>