Magenerds/GermanLaw

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?