Ich habe mein eigenes CRUD-Modul erstellt, das eine Inline-Bearbeitungsaktion ähnlich der für CMS-Seiten enthält.
Alles funktioniert in Ordnung, aber wenn ich phpsniffer mit dem EcgM2-Standard ausführe , wird folgende Warnung angezeigt :
Modell LSD-Methode save () in Schleife erkannt
Wie kann ich das vermeiden?
Hinweis: Die gleiche Warnung wird angezeigt, wenn ich an der oben verlinkten Kerndatei "schnüffle".
Hier ist meine execute
Methode für den Fall, dass jemand sie braucht. Aber es ist dem des CMS-Seitencontrollers sehr ähnlich
public function execute()
{
/** @var \Magento\Framework\Controller\Result\Json $resultJson */
$resultJson = $this->jsonFactory->create();
$error = false;
$messages = [];
$postItems = $this->getRequest()->getParam('items', []);
if (!($this->getRequest()->getParam('isAjax') && count($postItems))) {
return $resultJson->setData([
'messages' => [__('Please correct the data sent.')],
'error' => true,
]);
}
foreach (array_keys($postItems) as $authorId) {
/** @var \Sample\News\Model\Author $author */
$author = $this->authorRepository->getById((int)$authorId);
try {
$authorData = $this->filterData($postItems[$authorId]);
$this->dataObjectHelper->populateWithArray($author, $authorData , AuthorInterface::class);
$this->authorRepository->save($author);
} catch (LocalizedException $e) {
$messages[] = $this->getErrorWithAuthorId($author, $e->getMessage());
$error = true;
} catch (\RuntimeException $e) {
$messages[] = $this->getErrorWithAuthorId($author, $e->getMessage());
$error = true;
} catch (\Exception $e) {
$messages[] = $this->getErrorWithAuthorId(
$author,
__('Something went wrong while saving the author.')
);
$error = true;
}
}
return $resultJson->setData([
'messages' => $messages,
'error' => $error
]);
}
saveAttribute
Methode, da sie ein Array von "Attributcodes" zum Speichern anstelle von nur einem Attributcode akzeptiertAbstractAttribute
als Parameter akzeptiert , da ich es in meiner flachen Entität nicht benötige. Es funktioniert reibungslos. Danke noch einmal.