Bug Fix and optimization
Opened this issue · 1 comments
Hallo!
Bei der Installation des Moduls müssen Sie beim Lesen der CSV-Datei explizit einen Begrenzer im Konstruktor angeben. Andernfalls wird die Datei in einigen Situationen nicht analysiert:
$this ->_csvReader->setDelimiter(',');
Außerdem müssen Sie das Vorhandensein von Seiten mit diesen IDs überprüfen, da vorhandene Seiten überschrieben werden. Hier ist ein Beispiel für den Optimierungscode:
public function install()
{
$fixtures = ['Magenerds_GermanLaw::fixtures/pages.csv'];
foreach ($fixtures as $fileName) {
$fileName = $this->_fixtureManager->getFixture($fileName);
if (!file_exists($fileName)) {
continue;
}
$rows = $this->_csvReader->getData($fileName);
$header = array_values(array_shift($rows));
foreach ($rows as $row) {
$cmsData = array_combine($header, $row);
if (!$this->checkIfPageExists($cmsData['identifier'])) {
/** @var $page \Magento\Cms\Api\Data\PageInterface */
$page = $this->_pageFactory->create()
->load($cmsData['identifier'], 'identifier')
->addData($cmsData)
->setStores([\Magento\Store\Model\Store::DEFAULT_STORE_ID]);
$this->_pageRepository->save($page);
}
}
}
}
public function checkIfPageExists($identifier)
{
$cmsPage = $this->_pageFactory->create();
$cmsPage->load($identifier);
if ($pageId = $cmsPage->getId()) {
return $pageId;
} else {
return false;
}
}`
PS:
Hier wird die vorherige Datei heruntergeladen
$fixtureFile = 'Magenerds_GermanLaw::fixtures/tax_rules.csv';
$fixtureFileName = $this->_fixtureManager->getFixture($fixtureFile);
if (!file_exists($fileName)) {
continue;
}
$rows = $this->_csvReader->getData($fileName);
$header = array_values(array_shift($rows));
Hallo,
das Überschreiben ist jetzt mal so gewollt, falls sich etwas ändert in Zukunft. Der Delimiter dürfte der Default Delimiter, also ,
sein oder?