<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Backend\Block\Widget\Grid; /** * @api * @deprecated 100.2.0 in favour of UI component implementation * @method string|array getInputNames() * @since 100.0.2 */ class Serializer extends \Magento\Framework\View\Element\Template { /** * @var \Magento\Framework\Json\EncoderInterface */ protected $_jsonEncoder; /** * @param \Magento\Framework\View\Element\Template\Context $context * @param \Magento\Framework\Json\EncoderInterface $jsonEncoder * @param array $data */ public function __construct( \Magento\Framework\View\Element\Template\Context $context, \Magento\Framework\Json\EncoderInterface $jsonEncoder, array $data = [] ) { $this->_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); } }