Saya telah membuat modul CRUD saya sendiri yang berisi tindakan sunting inline mirip dengan yang untuk halaman CMS
Semuanya berfungsi OK, tetapi ketika menjalankan phpsniffer dengan standar EcgM2 saya mendapatkan peringatan ini:
Metode LSD metode save () terdeteksi dalam loop
Bagaimana saya bisa menghindari ini?
Catatan: Peringatan yang sama muncul jika saya "mengendus" file inti yang ditautkan di atas.
Berikut adalah execute
metode saya jika seseorang membutuhkannya. Tapi ini sangat mirip dengan yang dari pengontrol halaman CMS
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
metode EAV karena metode ini menerima larik "kode atribut" untuk disimpan alih-alih hanya satu kode atributAbstractAttribute
sebagai parameter, karena saya tidak membutuhkannya di entitas datar saya. Ini bekerja dengan lancar. Terima kasih lagi.