_urlModel = isset($args['urlModel']) ? $args['urlModel'] : $backendUrl; $this->_path = (string)$args['path']; if (isset($args['params'])) { $this->_params = (array)$args['params']; } if (isset($args['extraParamsTemplate'])) { $this->_extraParamsTemplate = (array)$args['extraParamsTemplate']; } } /** * Create url for passed item using passed url model * * @param \Magento\Framework\DataObject $item * @return string */ public function getUrl($item) { if (!empty($this->_path)) { $params = $this->_prepareParameters($item); return $this->_urlModel->getUrl($this->_path, $params); } return ''; } /** * Convert template params array and merge with preselected params * * @param \Magento\Framework\DataObject $item * @return array */ protected function _prepareParameters($item) { $params = []; foreach ($this->_extraParamsTemplate as $paramKey => $paramValueMethod) { $params[$paramKey] = $item->{$paramValueMethod}(); } return array_merge($this->_params, $params); } }