Skip to content

Commit

Permalink
Update CategoriesCommand.php
Browse files Browse the repository at this point in the history
Fix the following when attempting to import a CSV from CLI:
```
There is an error in app/code/Macopedia/CategoryImporter/Console/Command/CategoriesCommand.php at line: 159
array_key_exists(): Argument macopedia#2 ($array) must be of type array, null given#0 app/code/Macopedia/CategoryImporter/Console/Command/CategoriesCommand.php(159): array_key_exists()
macopedia#1 vendor/symfony/console/Command/Command.php(298): Macopedia\CategoryImporter\Console\Command\CategoriesCommand->execute()
macopedia#2 vendor/magento/framework/Interception/Interceptor.php(58): Symfony\Component\Console\Command\Command->run()
macopedia#3 vendor/magento/framework/Interception/Interceptor.php(138): Macopedia\CategoryImporter\Console\Command\CategoriesCommand\Interceptor->___callParent()
macopedia#4 vendor/magento/framework/Interception/Interceptor.php(153): Macopedia\CategoryImporter\Console\Command\CategoriesCommand\Interceptor->Magento\Framework\Interception\{closure}()
macopedia#5 generated/code/Macopedia/CategoryImporter/Console/Command/CategoriesCommand/Interceptor.php(23): Macopedia\CategoryImporter\Console\Command\CategoriesCommand\Interceptor->___callPlugins()
macopedia#6 vendor/symfony/console/Application.php(1040): Macopedia\CategoryImporter\Console\Command\CategoriesCommand\Interceptor->run()
macopedia#7 vendor/symfony/console/Application.php(301): Symfony\Component\Console\Application->doRunCommand()
macopedia#8 vendor/magento/framework/Console/Cli.php(116): Symfony\Component\Console\Application->doRun()
macopedia#9 vendor/symfony/console/Application.php(171): Magento\Framework\Console\Cli->doRun()
macopedia#10 bin/magento(23): Symfony\Component\Console\Application->run()
macopedia#11 {main}
```

According to ChatGPT :) 
The error is due to the `array_key_exists` function being called on a null array. Specifically, the issue is in the `mapHeaders` method on line 159. This method is supposed to map headers from the file to row keys, but there seems to be an issue with the way it's implemented.

To fix this issue, we can modify the `mapHeaders` method to handle the case where `$item` is not found in the `$headers` array.

In this version, I replaced the nested loop with a call to `in_array` to check if the current `$item` exists in the `$headers` array. If it does, the corresponding key is set in the `$headersMap` array.
  • Loading branch information
oviliz authored Dec 2, 2023
1 parent ecda830 commit a0d693d
Showing 1 changed file with 3 additions and 4 deletions.
7 changes: 3 additions & 4 deletions Console/Command/CategoriesCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -306,11 +306,10 @@ protected function addOrUpdateCategory($data, $isParent = false)
protected function mapHeaders($row)
{
$headers = array_merge($this->requiredHeaders, $this->optionalHeaders, $this->additionalHeaders);

foreach ($row as $key => $item) {
foreach ($headers as $header) {
if($item == $header) {
$this->headersMap[$header] = $key;
}
if (in_array($item, $headers)) {
$this->headersMap[$item] = $key;
}
}
}
Expand Down

0 comments on commit a0d693d

Please sign in to comment.