Как удалить учетную запись клиента программно в Magento2 CE?


Версия: Magento 2.1.0

Я запускаю следующие коды в своем контроллере и получаю ошибку:

$customer = $this->customerFactory->create()->load($id);
$customer->delete();

Ошибка:

Exception #0 (Magento\Framework\Exception\LocalizedException): Delete operation is forbidden for current area

Мой код был остановлен методом beforeDelete() в Magento\Framework\Model\AbstractModel.php . Он вызывает другой метод, называемый isAllowed(абстрактная модель $модель)

Как обойти эти методы и удалить клиента?

Author: Leo Tse, 2017-03-09

1 answers

Операция удаления клиента действительна только для администратора. Когда вы выполняете операцию удаления, проверка magento issecurea является истинной/ложной. Таким образом, вы можете назначить issEcureaArea следующим образом:

/**
 * @var \Magento\Framework\Registry
 */
protected $registry;

/**
 * @param Context $context
 * @param PageFactory $resultPageFactory
 */
public function __construct(
    \Magento\Framework\Registry $registry
) {
    $this->registry = $registry;
}

Теперь измените свой код следующим образом:

$this->registry->register('isSecureArea', true);
$customer = $this->customerFactory->create()->load($id);
$customer->delete();

Очистить кэш.

 5
Author: Sohel Rana, 2017-03-09 04:24:14