In Ihrem Fall können wir es mit dem Plugin versuchen . Der Magento\Customer\Controller\Account\CreatePost
Controller führt die Kundenregistrierungsanforderung aus. Wir können also die Logik mit dieser Klasse erstellen.
app / code / Firma / Modul / etc / frontend / di.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Customer\Controller\Account\CreatePost">
<plugin name="restrictCustomerEmail"
type="Company\Module\Model\Plugin\Controller\Account\RestrictCustomerEmail"/>
</type>
</config>
App / Code / Firma / Modul / Modell / Plugin / Controller / Konto / RestrictCustomerEmail.php
<?php
namespace Company\Module\Model\Plugin\Controller\Account;
use Magento\Framework\Controller\Result\RedirectFactory;
use Magento\Framework\UrlFactory;
use Magento\Framework\Message\ManagerInterface;
class RestrictCustomerEmail
{
/** @var \Magento\Framework\UrlInterface */
protected $urlModel;
/**
* @var \Magento\Framework\Controller\Result\RedirectFactory
*/
protected $resultRedirectFactory;
/**
* @var \Magento\Framework\Message\ManagerInterface
*/
protected $messageManager;
/**
* RestrictCustomerEmail constructor.
* @param UrlFactory $urlFactory
* @param RedirectFactory $redirectFactory
* @param ManagerInterface $messageManager
*/
public function __construct(
UrlFactory $urlFactory,
RedirectFactory $redirectFactory,
ManagerInterface $messageManager
)
{
$this->urlModel = $urlFactory->create();
$this->resultRedirectFactory = $redirectFactory;
$this->messageManager = $messageManager;
}
/**
* @param \Magento\Customer\Controller\Account\CreatePost $subject
* @param \Closure $proceed
* @return mixed
* @throws \Magento\Framework\Exception\LocalizedException
*/
public function aroundExecute(
\Magento\Customer\Controller\Account\CreatePost $subject,
\Closure $proceed
)
{
/** @var \Magento\Framework\App\RequestInterface $request */
$email = $subject->getRequest()->getParam('email');
list($nick, $domain) = explode('@', $email, 2);
if (in_array($domain, ['163.com', 'mail.ru'], true)) {
$this->messageManager->addErrorMessage(
'Registration is disabled for you domain'
);
$defaultUrl = $this->urlModel->getUrl('*/*/create', ['_secure' => true]);
/** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
$resultRedirect = $this->resultRedirectFactory->create();
return $resultRedirect->setUrl($defaultUrl);
}
return $proceed();
}
}
HINWEIS: Auf diese Weise kann verhindert werden, dass sich Kunden über die Startseite registrieren. Es ist besser, wenn wir dies überprüfen, bevor wir die Kundenentität speichern.