Estate atento ya que en este artículo vas a hallar el arreglo que buscas.Este artículo fue analizado por nuestros especialistas para asegurar la calidad y exactitud de nuestro post.
Solución:
De acuerdo con Max en que deberías usar el ProductRepositoryInterface::deleteById($sku)
pero también deberá realizar un cambio adicional para obtener permisos para eliminar.
Tenga en cuenta que el área de administración maneja esto creando la siguiente configuración en app/code/Magento/Backend/etc/adminhtml/di.xml
El MagentoFrameworkModelActionValidatorRemoveActionAllowed
class evita una verificación de permisos simplemente regresando true
en el isAllowed
método.
Sin el cambio anterior a di.xml, el MagentoFrameworkModelActionValidatorRemoveAction
se usará la clase, lo que hará que su solicitud de eliminación falle a menos que $this->registry->registry('isSecureArea')
se establece en true.
Parece que está tratando de crear algunos comandos de consola y todavía no estoy muy familiarizado con ellos, por lo que su mejor opción por ahora puede ser configurar el registro para permitir la operación de eliminación y refactorizar más adelante si se encuentra una solución más limpia.
$this->registry->register('isSecureArea', true)
Recientemente tuve este problema mientras escribía un comando de consola para eliminar categorías vacías.
Como se dijo en otra respuesta, debe registrarse 'isSecureArea'
a true.
Para hacer esto en un comando de consola, debe pasar la clase MagentoFrameworkRegistry a su constructor.
En mi caso lo hice de esta manera:
public function __construct(CategoryManagementInterface $categoryManagementInterface, CategoryRepositoryInterface $categoryRepositoryInterface, Registry $registry)
$this->_categoryRepository = $categoryRepositoryInterface;
$this->_categoryManagement = $categoryManagementInterface;
$registry->register('isSecureArea', true);
parent::__construct();
y luego en el execute
método que utilicé el repositorio para realizar la eliminación real:
$this->_categoryRepository->deleteByIdentifier($category->getId());
si usa un script, cree el objeto de registro como se muestra a continuación.
$objectManager = MagentoFrameworkAppObjectManager::getInstance();
$objectManager->get('MagentoFrameworkRegistry')->register('isSecureArea', true);
Haga clic aquí para obtener una explicación detallada. http://www.pearlbells.co.uk/mass-delete-magento-2-categories-programmatically/
si es un script de una sola vez, puede usar OM
Te mostramos reseñas y puntuaciones
Agradecemos que desees añadir valor a nuestro contenido informacional dando tu experiencia en las críticas.