From b72b0e92aaff85f1d51b76e5e3f1b21b1d8e6c90 Mon Sep 17 00:00:00 2001 From: Cyrill Schumacher Date: Tue, 16 Sep 2014 14:32:56 +1000 Subject: [PATCH 1/2] Improved render() method in Magento\Backend\Block\Widget\Grid\Column\Renderer\Concat which allows now calls to any method on a model. Configuration in adminhtml grid can look like this: ```php $this->addColumn('product_price', array( 'header' => __('RRP incl. Tax
Sales Prices incl. Tax'), 'getter' => ['returnProductPrice', 'getProductFinalPrice'], 'align' => 'right', 'type' => 'concat', 'separator' => '
', )); ``` or this ```php $this->addColumn('product_price2', array( 'header' => __('RRP incl. Tax
SP    incl. Tax'), 'index' => ['product_price', 'product_final_price'], 'align' => 'right', 'type' => 'concat', 'separator' => '
', )); ``` --- .../Block/Widget/Grid/Column/Renderer/Concat.php | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/app/code/Magento/Backend/Block/Widget/Grid/Column/Renderer/Concat.php b/app/code/Magento/Backend/Block/Widget/Grid/Column/Renderer/Concat.php index aa528c9a2deaf..fe6d152c0dda9 100644 --- a/app/code/Magento/Backend/Block/Widget/Grid/Column/Renderer/Concat.php +++ b/app/code/Magento/Backend/Block/Widget/Grid/Column/Renderer/Concat.php @@ -39,10 +39,13 @@ class Concat extends \Magento\Backend\Block\Widget\Grid\Column\Renderer\Abstract */ public function render(\Magento\Framework\Object $row) { - $dataArr = array(); - foreach ($this->getColumn()->getIndex() as $index) { - if ($data = $row->getData($index)) { - $dataArr[] = $data; + $dataArr = []; + $methods = $this->getColumn()->getGetter() ? $this->getColumn()->getGetter() : $this->getColumn()->getIndex(); + foreach ($methods as $m) { + if (true === is_callable([$row, $m])) { + $dataArr[] = call_user_func(array($row, $m), $this->getColumn()); + } else { + $dataArr[] = $row->getData($m); } } $data = join($this->getColumn()->getSeparator(), $dataArr); From fa3849e212ba3b8dc9c2cd598b6bac40c1c4d691 Mon Sep 17 00:00:00 2001 From: Cyrill Schumacher Date: Tue, 16 Sep 2014 14:39:34 +1000 Subject: [PATCH 2/2] Additional check that $data has data. --- .../Backend/Block/Widget/Grid/Column/Renderer/Concat.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/Backend/Block/Widget/Grid/Column/Renderer/Concat.php b/app/code/Magento/Backend/Block/Widget/Grid/Column/Renderer/Concat.php index fe6d152c0dda9..eff5876a2477f 100644 --- a/app/code/Magento/Backend/Block/Widget/Grid/Column/Renderer/Concat.php +++ b/app/code/Magento/Backend/Block/Widget/Grid/Column/Renderer/Concat.php @@ -43,9 +43,12 @@ public function render(\Magento\Framework\Object $row) $methods = $this->getColumn()->getGetter() ? $this->getColumn()->getGetter() : $this->getColumn()->getIndex(); foreach ($methods as $m) { if (true === is_callable([$row, $m])) { - $dataArr[] = call_user_func(array($row, $m), $this->getColumn()); + $data = call_user_func(array($row, $m), $this->getColumn()); } else { - $dataArr[] = $row->getData($m); + $data = $row->getData($m); + } + if (false === empty($data)) { + $dataArr[] = $data; } } $data = join($this->getColumn()->getSeparator(), $dataArr);