_jsonEncoder = $jsonEncoder; parent::__construct($context, $data); } /** * Preparing global layout * * @return $this */ protected function _prepareLayout() { $grid = $this->getGridBlock(); if (is_string($grid)) { $grid = $this->getLayout()->getBlock($grid); } if ($grid instanceof \Magento\Backend\Block\Widget\Grid) { $this->setGridBlock($grid)->setSerializeData($grid->{$this->getCallback()}()); } return parent::_prepareLayout(); } /** * Set serializer template * * @return void */ public function _construct() { parent::_construct(); $this->setTemplate('Magento_Backend::widget/grid/serializer.phtml'); } /** * Get grid column input names to serialize * * @param bool $asJSON * @return string|array */ public function getColumnInputNames($asJSON = false) { if ($asJSON) { return $this->_jsonEncoder->encode((array)$this->getInputNames()); } return (array)$this->getInputNames(); } /** * Get object data as JSON * * @return string */ public function getDataAsJSON() { $result = []; $inputNames = $this->getInputNames(); if ($serializeData = $this->getSerializeData()) { $result = $serializeData; } elseif (!empty($inputNames)) { return '{}'; } return $this->_jsonEncoder->encode($result); } }