/** * Prepare category data for curl. * * @param FixtureInterface $fixture * @return array */ protected function prepareData(FixtureInterface $fixture) { $data['general'] = $this->replaceMappingData($fixture->getData()); $data['is_anchor'] = isset($data['is_anchor']) ? $data['is_anchor'] : 0; if ($fixture->hasData('landing_page')) { $data['general']['landing_page'] = $this->getBlockId($fixture->getLandingPage()); } $diff = array_diff($this->dataUseConfig, array_keys($data['general'])); if (!empty($diff)) { $data['use_config'] = $diff; } return $data; }
/** * Post request for creating Subcategory. * * @param FixtureInterface|null $fixture [optional] * @return array */ public function persist(FixtureInterface $fixture = null) { $data['general'] = $this->replaceMappingData($fixture->getData()); if ($fixture->hasData('landing_page')) { $data['general']['landing_page'] = $this->getBlockId($fixture->getLandingPage()); } if ($fixture->hasData('category_products')) { $data['category_products'] = $this->prepareCategoryProducts($fixture); } $diff = array_diff($this->dataUseConfig, array_keys($data['general'])); if (!empty($diff)) { $data['use_config'] = $diff; } $parentCategoryId = $data['general']['parent_id']; $url = $_ENV['app_backend_url'] . 'catalog_category/save/store/0/parent/' . $parentCategoryId . '/?isAjax=true'; $curl = new BackendDecorator(new CurlTransport(), $this->_configuration); $curl->write(CurlInterface::POST, $url, '1.1', [], $data); $response = $curl->read(); $curl->close(); preg_match('~http://.+/id/(\\d+).+?isAjax~', $response, $matches); $id = isset($matches[1]) ? (int) $matches[1] : null; return ['id' => $id]; }