I am using magento2.3.5-2
I have overwrite wishlist share module as below
<preference for="Magento\Wishlist\Controller\Index\Send" type="Shop\Custom\Controller\Wishlist\Share" />
now the content execute function for the file app/code/Wowshop/Custom/Controller/Wishlist/Share.php
is as below
public function execute()
{
/** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
$resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
$captchaForName = 'share_wishlist_form';
/** @var CaptchaModel $captchaModel */
$captchaModel = $this->captchaHelper->getCaptcha($captchaForName);
if (!$this->_formKeyValidator->validate($this->getRequest())) {
$resultRedirect->setPath('*/*/');
return $resultRedirect;
}
$isCorrectCaptcha = $this->validateCaptcha($captchaModel, $captchaForName);
$this->logCaptchaAttempt($captchaModel);
if (!$isCorrectCaptcha) {
$this->messageManager->addErrorMessage(__('Incorrect CAPTCHA'));
$resultRedirect->setPath('*/*/share');
return $resultRedirect;
}
$wishlist = $this->wishlistProvider->getWishlist();
if (!$wishlist) {
throw new NotFoundException(__('Page not found.'));
}
$sharingLimit = $this->_wishlistConfig->getSharingEmailLimit();
$textLimit = $this->_wishlistConfig->getSharingTextLimit();
$emailsLeft = $sharingLimit - $wishlist->getShared();
$emails = $this->getRequest()->getPost('emails');
$emails = empty($emails) ? $emails : explode(',', $emails);
$error = false;
$message = (string)$this->getRequest()->getPost('message');
if (strlen($message) > $textLimit) {
$error = __('Message length must not exceed %1 symbols', $textLimit);
} else {
$message = nl2br($this->escaper->escapeHtml($message));
if (empty($emails)) {
$error = __('Please enter an email address.');
} else {
if (count($emails) > $emailsLeft) {
$error = __('This wish list can be shared %1 more times.', $emailsLeft);
} else {
foreach ($emails as $index => $email) {
$email = trim($email);
if (!\Zend_Validate::is($email, \Magento\Framework\Validator\EmailAddress::class)) {
$error = __('Please enter a valid email address.');
break;
}
$emails[$index] = $email;
}
}
}
}
if ($error) {
$this->messageManager->addErrorMessage($error);
$this->wishlistSession->setSharingForm($this->getRequest()->getPostValue());
$resultRedirect->setPath('*/*/share');
return $resultRedirect;
}
/** @var \Magento\Framework\View\Result\Layout $resultLayout */
$resultLayout = $this->resultFactory->create(ResultFactory::TYPE_LAYOUT);
$this->addLayoutHandles($resultLayout);
$this->inlineTranslation->suspend();
$sent = 0;
try {
$customer = $this->_customerSession->getCustomerDataObject();
$customerName = $this->_customerHelperView->getCustomerName($customer);
$message .= $this->getRssLink($wishlist->getId(), $resultLayout);
$emails = array_unique($emails);
$sharingCode = $wishlist->getSharingCode();
try {
foreach ($emails as $email) {
$transport = $this->_transportBuilder->setTemplateIdentifier(
$this->scopeConfig->getValue(
'wishlist/email/email_template',
\Magento\Store\Model\ScopeInterface::SCOPE_STORE
)
)->setTemplateOptions(
[
'area' => \Magento\Framework\App\Area::AREA_FRONTEND,
'store' => $this->storeManager->getStore()->getStoreId(),
]
)->setTemplateVars(
[
'customer' => $customer,
'customerName' => $customerName,
'salable' => $wishlist->isSalable() ? 'yes' : '',
'items' => $this->getWishlistItems($resultLayout),
'viewOnSiteLink' => $this->_url->getUrl('*/shared/index', ['code' => $sharingCode]),
'message' => $message,
'store' => $this->storeManager->getStore(),
]
)->setFrom(
$this->scopeConfig->getValue(
'wishlist/email/email_identity',
\Magento\Store\Model\ScopeInterface::SCOPE_STORE
)
)->addTo(
$email
)->getTransport();
$transport->sendMessage();
$sent++;
}
} catch (\Exception $e) {
$wishlist->setShared($wishlist->getShared() + $sent);
$wishlist->save();
throw $e;
}
$wishlist->setShared($wishlist->getShared() + $sent);
$wishlist->save();
$this->inlineTranslation->resume();
$this->_eventManager->dispatch('wishlist_share', ['wishlist' => $wishlist]);
$this->messageManager->addSuccessMessage(__('Your wish list has been shared.'));
$resultRedirect->setPath('*/*', ['wishlist_id' => $wishlist->getId()]);
return $resultRedirect;
} catch (\Exception $e) {
$this->inlineTranslation->resume();
$this->messageManager->addErrorMessage($e->getMessage());
$this->wishlistSession->setSharingForm($this->getRequest()->getPostValue());
$resultRedirect->setPath('*/*/share');
return $resultRedirect;
}
}
I am trying to get the list of wishlist items being shared
I am thinking of something like this
$item = $this->_objectManager->create(\Magento\Wishlist\Model\Item::class)->load($itemId);
but I don't know how to get the $itemId
from the wishlist id like this data for example
$wishlist->getId()
any help is appreciated
Thank you