ستساعدك المقالة التالية: كيفية “إضافة إلى قائمة الرغبات” دون إعادة التوجيه إلى صفحة قائمة الرغبات في Magento 2
<؟ php
مساحة الاسم Meetanshi \ Extension \ Controller \ Index ؛
استخدم Magento \ Catalog \ Api \ ProductRepositoryInterface ؛
استخدام Magento \ Framework \ App \ Action ؛
استخدم Magento \ Framework \ Data \ Form \ FormKey \ Validator ؛
استخدم Magento \ Framework \ Exception \ NotFoundException ؛
استخدم Magento \ Framework \ Exception \ NoSuchEntityException ؛
استخدام Magento \ Framework \ Controller \ ResultFactory ؛
الفئة Add extends \ Magento \ Wishlist \ Controller \ Index \ Add
{
تنفيذ الوظيفة العامة ()
{
$ resultRedirect = $ this-> resultFactory-> إنشاء (ResultFactory :: TYPE_REDIRECT) ؛
إذا (! $ this-> formKeyValidator-> تحقق ($ this-> getRequest ())) {
return $ resultRedirect-> setPath (‘* /’) ؛
}
$ wishlist = $ this-> wishlistProvider-> getWishlist () ؛
إذا (! $ wishlist) {
طرح NotFoundException الجديد (__ (‘الصفحة غير موجودة.’)) ؛
}
الجلسة بالدولار = $ this -> _ customerSession؛
$ requestParams = $ this-> getRequest () -> getParams ()؛
إذا ($ session-> getBeforeWishlistRequest ()) {
$ requestParams = $ session-> getBeforeWishlistRequest ()؛
$ session-> unsBeforeWishlistRequest () ؛
}
$ productId = isset ($ requestParams[‘product’])؟ (int) $ requestParams[‘product’] : باطل؛
إذا (! $ productId) {
resultRedirect $-> setPath (‘* /’)؛
إرجاع resultRedirect $؛
}
يحاول {
$ product = $ this-> productRepository-> getById ($ productId) ؛
} catch (NoSuchEntityException $ e) {
المنتج $ = لاغ ؛
}
إذا (! $ product ||! $ product-> isVisibleInCatalog ()) {
$ this-> messageManager-> addErrorMessage (__ (“لا يمكننا تحديد منتج”)) ؛
resultRedirect $-> setPath (‘* /’)؛
إرجاع resultRedirect $؛
}
يحاول {
$ buyRequest = new \ Magento \ Framework \ DataObject ($ requestParams) ؛
نتيجة $ = قائمة الرغبات $-> addNewItem ($ product، $ buyRequest)؛
إذا (is_string ($ result)) {
رمي new \ Magento \ Framework \ Exception \ LocalizedException (__ ($ result)) ؛
}
إذا (Wishlist-> isObjectNew ()) {
قائمة الرغبات $-> حفظ () ؛
}
$ this -> _ eventManager-> إرسال (
“Wishlist_add_product” ،
[‘wishlist’ => $wishlist, ‘product’ => $product, ‘item’ => $result]
) ؛
المرجع $ = $ session-> getBeforeWishlistUrl () ؛
إذا ($ إحالة) {
جلسة $-> setBeforeWishlistUrl (خالية) ؛
} آخر {
المرجع $ = $ this -> _ redirect-> getRefererUrl () ؛
}
$ this -> _ objectManager-> get (\ Magento \ Wishlist \ Helper \ Data :: class) -> calculate () ؛
$ this-> messageManager-> addComplexSuccessMessage (
“addProductSuccessMessage” ،
[
‘product_name’ => $product->getName(),
‘referer’ => $referer
]
) ؛
} catch (\ Magento \ Framework \ Exception \ LocalizedException $ e) {
$ this-> messageManager-> addErrorMessage (
__ (“لا يمكننا إضافة العنصر إلى قائمة الرغبات الآن:٪ 1.”، $ e-> getMessage ())
) ؛
} catch (\ استثناء $ e) {
$ this-> messageManager-> addExceptionMessage (
$ ه ،
__ (“لا يمكننا إضافة العنصر إلى قائمة الرغبات الآن.”)
) ؛
}
$ resultRedirect-> setUrl ($ this -> _ redirect-> getRefererUrl ()) ؛
إرجاع resultRedirect $؛
}
}