Saltar al contenido

La operación de eliminación está prohibida para el área actual

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *