2013-09-05 49 views
1

我需要的員工的名單,但是,年齡信息太(列),在換句話說:自定義列表找到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 } ?> 

而且,我怎麼能做到這一點保持name/id CakePHP所產生?

+3

創建自己的幫助程序,擴展cakephp的表單助手。覆蓋'select'方法並添加您自己的支持。或者就像你發佈的那樣。 – Rob

+0

事實上,表單助手已經能夠做到這一點,至少在Cake 2.x中,不知道老年人的Cake版本很難... – ndm

+0

@ndm我不知道那個人。謝謝 –

回答

6

如果您使用的是蛋糕2.x的,那麼你可以讓FormHelper爲你做這個,你只需要的選項數據格式正確,並通過正確我的意思是列保持陣列,至少namevalueoption元素文本和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>