CakePHP中的自定义查找列表

Pat*_*iel 1 php cakephp

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

<option value="id" data-age="age">Name</option>
Run Code Online (Sandbox Code Playgroud)

我怎么能在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 } ?>
Run Code Online (Sandbox Code Playgroud)

而且,我怎样才能保持name/idCakePHP 的生成?

ndm*_*ndm 6

如果您使用的是蛋糕2.x的,那么你可以让FormHelper你做到这一点,你只需要的选项数据格式正确,并通过正确我的意思是列保持阵列,至少namevalue键的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,
    ),
);
Run Code Online (Sandbox Code Playgroud)

然后将其传递给创建select元素的表单助手:

echo $this->Form->input('employee_id', array('type' => 'select', 'options' => $options));
Run Code Online (Sandbox Code Playgroud)

这应该生成以下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>
Run Code Online (Sandbox Code Playgroud)