Cakephp为具有额外属性的列表框返回数组

时间:2014-10-29 22:49:10

标签: cakephp

我试图在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')
));

1 个答案:

答案 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);