From 8da4b38672ba953daba55ca979b7cb475751ad5f Mon Sep 17 00:00:00 2001 From: flynsarmy Date: Wed, 30 Jul 2014 20:11:47 +1000 Subject: [PATCH 1/3] Improve getDataSourceValues so model knows what attribute it's dealing with --- modules/backend/formwidgets/DataGrid.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/modules/backend/formwidgets/DataGrid.php b/modules/backend/formwidgets/DataGrid.php index ff4f35f9e..5fb5e2c30 100644 --- a/modules/backend/formwidgets/DataGrid.php +++ b/modules/backend/formwidgets/DataGrid.php @@ -107,10 +107,18 @@ class DataGrid extends FormWidgetBase public function getDataSourceValues() { - if (!$this->model->methodExists('getGridDataSourceValues')) + $methodName = 'get'.studly_case($this->columnName).'DataSourceValues'; + + if (!$this->model->methodExists($methodName) && !$this->model->methodExists('getGridDataSourceValues')) throw new ApplicationException('Model :model does not contain a method getGridDataSourceValues()'); - $result = $this->model->getGridDataSourceValues(); + if ($this->model->methodExists($methodName)) + $result = $this->model->$methodName($field, $value, $data); + else + $result = $this->model->getGridDataSourceValues($this->columnName, $field, $value, $data); + + if (!is_array($result)) + $result = []; return $result; } From a56022d7644e577af260377aaee7acbd9fddafd7 Mon Sep 17 00:00:00 2001 From: flynsarmy Date: Wed, 30 Jul 2014 20:18:12 +1000 Subject: [PATCH 2/3] Add comment --- modules/backend/formwidgets/DataGrid.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/backend/formwidgets/DataGrid.php b/modules/backend/formwidgets/DataGrid.php index 5fb5e2c30..fdd62701f 100644 --- a/modules/backend/formwidgets/DataGrid.php +++ b/modules/backend/formwidgets/DataGrid.php @@ -105,6 +105,11 @@ class DataGrid extends FormWidgetBase return $result; } + /** + * Looks at the model for getXXXDataSourceValues or getGridDataSourceValues methods + * to obtain the starting values for the grid. + * @return array + */ public function getDataSourceValues() { $methodName = 'get'.studly_case($this->columnName).'DataSourceValues'; From 2e76630ce6f65f175fc9a215410b33f764f3f669 Mon Sep 17 00:00:00 2001 From: flynsarmy Date: Wed, 30 Jul 2014 20:44:18 +1000 Subject: [PATCH 3/3] Remove incorrect method arguments --- modules/backend/formwidgets/DataGrid.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/backend/formwidgets/DataGrid.php b/modules/backend/formwidgets/DataGrid.php index fdd62701f..505c13c8f 100644 --- a/modules/backend/formwidgets/DataGrid.php +++ b/modules/backend/formwidgets/DataGrid.php @@ -118,9 +118,9 @@ class DataGrid extends FormWidgetBase throw new ApplicationException('Model :model does not contain a method getGridDataSourceValues()'); if ($this->model->methodExists($methodName)) - $result = $this->model->$methodName($field, $value, $data); + $result = $this->model->$methodName(); else - $result = $this->model->getGridDataSourceValues($this->columnName, $field, $value, $data); + $result = $this->model->getGridDataSourceValues($this->columnName); if (!is_array($result)) $result = [];