【问题标题】:Cakephp return array for listbox with extra attributeCakephp为具有额外属性的列表框返回数组
【发布时间】:2014-10-29 22:49:10
【问题描述】:

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

【问题讨论】:

    标签: cakephp


    【解决方案1】:

    您可以为这样的字段使用别名:

    $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);
    

    【讨论】:

      猜你喜欢
      • 2021-07-17
      • 1970-01-01
      • 1970-01-01
      • 2020-01-25
      • 1970-01-01
      • 2022-11-22
      • 2014-01-11
      • 2016-11-06
      • 1970-01-01
      相关资源
      最近更新 更多