From dc9ce88424de0f2b13d1c3d49ed35fa3ec374e07 Mon Sep 17 00:00:00 2001 From: David Yell Date: Mon, 1 Sep 2014 11:33:45 +0100 Subject: [PATCH] Allowed passing of fields so that virtual fields and other field configurations are possible. --- Model/Behavior/ListableBehavior.php | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/Model/Behavior/ListableBehavior.php b/Model/Behavior/ListableBehavior.php index 5d998ec..f049295 100644 --- a/Model/Behavior/ListableBehavior.php +++ b/Model/Behavior/ListableBehavior.php @@ -89,8 +89,13 @@ public function setup(Model $model, $config = array()) { * @return array */ public function _findListing(Model $model, $findMethod, $state, $query, $results = array()) { + if (empty($query['fields'])) { + $fields = array($model->primaryKey, $model->displayField); + } else { + $fields = $query['fields']; + } + if ($state == 'before') { - $query['fields'] = array($model->primaryKey, $model->displayField); $query['contain'] = array( $this->settings[$model->alias]['relatedModelName'] => array( 'fields' => array( @@ -102,7 +107,7 @@ public function _findListing(Model $model, $findMethod, $state, $query, $results $this->findMethod = $findMethod; return $query; } - + // Format the results foreach ($results as $row) { if (isset($row[$model->alias])) { @@ -110,9 +115,9 @@ public function _findListing(Model $model, $findMethod, $state, $query, $results $display = $this->settings[$model->alias]['relatedModelDisplayField']; $optgroup = $row[$name][$display]; - $id = $row[$model->alias]['id']; + $id = $row[$model->alias][$fields[0]]; - $list[$optgroup][$id] = $row[$model->alias][$model->displayField]; + $list[$optgroup][$id] = $row[$model->alias][$fields[1]]; } }