我试图在Cakephp中显示具有其他属性的列表框选项。
例如:
<option value="1" dataval-price="5">one</option>
<option value="2" dataval-price="10">two</option>
<option value="3" dataval-price="50">three</option>
在别处读过这只是构建数组的情况:
$options = array(
2 => array('name' => 'One', 'value' => 1, 'dataval-price' => '5'),
2 => array('name' => 'Two', 'value' => 2, 'dataval-price' => '10'),
2 => array('name' => 'Three', 'value' => 3, 'dataval-price' => '50')
);
如何以此格式返回数据?下面的帮助程序将以强制列表框改为使用optgroups的格式返回数据。
$optionsArray = $this->TableX->find('all', array(
'fields' => array('name', 'id', 'price'),
'order' => array('name' => 'ASC')
));
答案 0 :(得分:0)
您可以对字段使用别名:
$results = $this->Model->find('all', array(
'fields' => array('name', 'id AS value', 'price AS dataval-price'),
'order' => array('name' => 'ASC')
));
然而,您的结果会显示如下:
array(
0 => array(
'Model' => array(
'name' => 'name',
'value' => 1,
'dataval-price' => 2.00
)
),
//etc
);
这可以使用CakePHP的哈希类修复:
$results = Hash::flatten($results);
$keys = str_replace('Model.', '', array_keys($results));
$results = array_combine($keys, array_values($results));
$results = Hash::expand($results);