He creado mi propio módulo CRUD que contiene una acción de edición en línea similar a la de las páginas CMS.
Todo funciona bien, pero cuando ejecuto phpsniffer con el estándar EcgM2 recibo esta advertencia:
Modelo LSD método save () detectado en bucle
¿Cómo puedo evitar esto?
Nota: La misma advertencia aparece si "olfateo" el archivo principal vinculado anteriormente.
Aquí está mi execute
método en caso de que alguien lo necesite. Pero es muy similar al del controlador de página 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
método EAV , ya que acepta una serie de "códigos de atributos" para guardar en lugar de un solo código de atributoAbstractAttribute
como parámetro, porque no lo necesito en mi entidad plana. Funciona sin problemas. Gracias de nuevo.