Кемеровские программисты php общаются здесь
Anonymous
Пользовательский модуль Magento 2 и веб-сервис возвращают пустой массив
Сообщение
Anonymous » 23 июл 2024, 08:50
Я новичок в Magento 2x. Однако я попытался создать собственный модуль и веб-сервис для проверки существования электронной почты клиента. Но в результате я получаю просто пустой массив. Вот что я сделал на данный момент:
1. app/code/Test/Customers/registration.php
Код: Выделить всё
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Test_Customers',
__DIR__
);
2. app/code/Test/Customers/etc/module.xml
3. app/code/Test/Customers/etc/di.xml
4. app/code/Test/Customers/etc/webapi.xml
5. app/code/Test/Customers/Api/AccountInterface.php
Код: Выделить всё
namespace Test\Customers\Api;
/**
* Account interface.
* @api
*/
interface AccountInterface
{
/**
* Check if given email is associated with a customer account in given website.
* @api
* @param string $customerEmail
* @return \Test\Customers\Api\AccountInterface
* @throws \Magento\Framework\Exception\LocalizedException
*/
public function isEmailExist($customerEmail);
}
6. app/code/Test/Customers/Model/Account.php
Код: Выделить всё
namespace Test\Customers\Model;
use Test\Customers\Api\AccountInterface;
use Magento\Customer\Api\CustomerRepositoryInterface;
use Magento\Framework\Exception\NoSuchEntityException;
class Account implements AccountInterface
{
/**
* @var CustomerRepositoryInterface
*/
private $customerRepository;
/** @var \Magento\Framework\Controller\Result\JsonFactory */
protected $resultJsonFactory;
/**
* @param CustomerRepositoryInterface $customerRepository
* @param \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory
*/
public function __construct(
CustomerRepositoryInterface $customerRepository,
\Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory
)
{
$this->customerRepository = $customerRepository;
$this->resultJsonFactory = $resultJsonFactory;
}
/**
* {@inheritdoc}
*/
public
function isEmailExist($customerEmail)
{
/** @var \Magento\Framework\Controller\Result\JsonFactory */
$result = $this->resultJsonFactory->create();
try {
$this->customerRepository->get($customerEmail);
} catch (NoSuchEntityException $e) {
}
return $result->setData(['success' => true]);
}
}
Я попробовал запрос POST от клиента REST
http://127.0.0.1/PATH_TO_MAGENTO_DIRECTORY/index . php/rest/V1/customers/isEmailExist
Тело POST:
и получил [] в ответ
Подробнее здесь:
https://stackoverflow.com/questions/422 ... lank-array
1721713802
Anonymous
Я новичок в Magento 2x. Однако я попытался создать собственный модуль и веб-сервис для проверки существования электронной почты клиента. Но в результате я получаю просто пустой массив. Вот что я сделал на данный момент: [b]1. app/code/Test/Customers/registration.php[/b] [code]\Magento\Framework\Component\ComponentRegistrar::register( \Magento\Framework\Component\ComponentRegistrar::MODULE, 'Test_Customers', __DIR__ ); [/code] [b]2. app/code/Test/Customers/etc/module.xml[/b] [code] [/code] [b]3. app/code/Test/Customers/etc/di.xml[/b] [code] [/code] [b]4. app/code/Test/Customers/etc/webapi.xml[/b] [code] [/code] [b]5. app/code/Test/Customers/Api/AccountInterface.php[/b] [code] namespace Test\Customers\Api; /** * Account interface. * @api */ interface AccountInterface { /** * Check if given email is associated with a customer account in given website. * @api * @param string $customerEmail * @return \Test\Customers\Api\AccountInterface * @throws \Magento\Framework\Exception\LocalizedException */ public function isEmailExist($customerEmail); } [/code] [b]6. app/code/Test/Customers/Model/Account.php[/b] [code]namespace Test\Customers\Model; use Test\Customers\Api\AccountInterface; use Magento\Customer\Api\CustomerRepositoryInterface; use Magento\Framework\Exception\NoSuchEntityException; class Account implements AccountInterface { /** * @var CustomerRepositoryInterface */ private $customerRepository; /** @var \Magento\Framework\Controller\Result\JsonFactory */ protected $resultJsonFactory; /** * @param CustomerRepositoryInterface $customerRepository * @param \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory */ public function __construct( CustomerRepositoryInterface $customerRepository, \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory ) { $this->customerRepository = $customerRepository; $this->resultJsonFactory = $resultJsonFactory; } /** * {@inheritdoc} */ public function isEmailExist($customerEmail) { /** @var \Magento\Framework\Controller\Result\JsonFactory */ $result = $this->resultJsonFactory->create(); try { $this->customerRepository->get($customerEmail); } catch (NoSuchEntityException $e) { } return $result->setData(['success' => true]); } } [/code] Я попробовал запрос POST от клиента REST http://127.0.0.1/PATH_TO_MAGENTO_DIRECTORY/index. php/rest/V1/customers/isEmailExist Тело POST: [code]{ "customerEmail": "sa@example.com" } [/code] и получил [] в ответ Подробнее здесь: [url]https://stackoverflow.com/questions/42291943/magento-2-custom-module-and-webservice-returns-blank-array[/url]