Anda mengaktifkan atau menonaktifkan Guest Checkout?
Khoa TruongDinh
Saya telah menonaktifkan checkout tamu.
Paul
Bagaimana dengan masalah Anda saat ini?
Khoa TruongDinh
Kode yang Anda berikan sedikit berbeda dari magento saya. Mungkin dari versi yang berbeda. Dan saya tidak mengerti mengapa ini terkait dengan cookie. Saya akhirnya menyelesaikannya dengan menimpa kelas LoginPost. Saya memposting jawaban saya di bawah ini. Terima kasih!
Paul
1
Versi magento saya adalah v2.0.8
Paul
Jawaban:
28
Plugin adalah solusi yang lebih baik dalam hal ini karena kelas tambahan Anda mungkin perlu diperbarui ketika Magento 2 memperbarui.
Berikut adalah solusi menggunakan after-plugin pada LoginPost-> execute () seperti yang disarankan oleh Xenocide8998.
<?php/**
*
*/namespaceVendor\Module\Plugin;/**
*
*/classLoginPostPlugin{/**
* Change redirect after login to home instead of dashboard.
*
* @param \Magento\Customer\Controller\Account\LoginPost $subject
* @param \Magento\Framework\Controller\Result\Redirect $result
*/publicfunction afterExecute(
\Magento\Customer\Controller\Account\LoginPost $subject,
$result){
$result->setPath('/');// Change this to what you wantreturn $result;}}
Ini bekerja dengan baik. Satu hal adalah ketika Anda perlu $ result-> setPath ('/'); ke jalur khusus Anda jangan gunakan "/" sebelum URL, misalnya. $ result-> setPath ('customer / dashboard /');
Shuvankar Paul
Pendekatan yang baik menggunakan plugin
Hafiz Arslan
Perfect Work, terima kasih
HaFiz Umer
Satu-satunya masalah Anda dengan ini adalah jika pelanggan mencoba masuk dan gagal, maka Anda masih akan membuka beranda. Tidak ada cara untuk menangkap login yang gagal.
andy jones
bagaimana saya bisa meneruskan url halaman saat ini ke plugin ini?
Rahul
6
Saya mengatasinya dengan mengganti kelas LoginPost
Saya pikir menggunakan plugin dengan afterExecute()akan menjadi opsi yang lebih bersih
Xenocide8998
2
Ini bukan pendekatan yang baik dan hanya akan menimbulkan masalah di masa depan. Plugin adalah cara untuk pergi.
phagento
dapatkah kita mengalihkan dari dasbor akun ke halaman riwayat pesanan penjualan secara default?
jafar pinjar
0
Bahwa penyimpanan lokal saat ini menyebabkan masalah kami.
Jika kami mengaktifkan atau menonaktifkan Redirect Customer to Account Dashboard after Logging indan Guest Checkout dalam Konfigurasi, fitur ini akan berfungsi dengan baik. Namun, kami perlu menghapus penyimpanan lokal Anda.
Kami dapat memeriksa penyimpanan lokal localStorage.getItem('mage-cache-storage').
var cart = customerData.get('cart'),
customer = customerData.get('customer');if(!customer().firstname && cart().isGuestCheckoutAllowed ===false){// set URL for redirect on successful login/registration. It's postprocessed on backend.
$.cookie('login_redirect',this.options.url.checkout);if(this.options.url.isRedirectRequired){
location.href =this.options.url.loginUrl;}else{
authenticationPopup.showModal();}returnfalse;}
Magento akan menetapkan cookie $.cookie('login_redirect', this.options.url.checkout)berdasarkan customerDatadari penyimpanan lokal.
Dari pengontrol vendor/magento/module-customer/Controller/Account/LoginPost.php. Ini akan memeriksa URL pengalihan dari cookie.
Saya menyelesaikan ini dengan melewati referer di pengontrol modul kustom.
Langkah1
`
useMagento\Framework\App\Action\Context;useMagento\Framework\View\Result\PageFactory;useMagento\Customer\Model\Session;useMagento\Framework\UrlInterface;classApproveextends \Magento\Framework\App\Action\Action {/**
* @var \Magento\Framework\View\Result\Page
*/protected $resultPageFactory;/**
* $param \Magento\Framework\App\Action\Context $context *//**
* @param CustomerSession
*/protected $_customerSession;protected $_urlInterface;publicfunction __construct(Context $context,PageFactory $resultPageFactory,Session $customerSession,UrlInterface $urlInterface){
$this->resultPageFactory = $resultPageFactory;
$this->_customerSession = $customerSession;
$this->_urlInterface = $urlInterface;
parent::__construct($context);}publicfunction execute(){
$url = $this->_urlInterface->getUrl('*/*/*',['_current'=>true,'_use_rewrite'=>true]);// here pass custom url or you can either use current url on which you are currently and want to come back after logged in.
$loginUrl = $this->_urlInterface->getUrl('customer/account/login', array('referer'=> base64_encode($url)));if($this->_customerSession->isLoggedIn()){return $this->resultPageFactory->create();}
$this->_redirect($loginUrl);}}`
Langkah 2
Buka Admin: Toko> Konfigurasi> Pelanggan> Konfigurasi Pelanggan> Opsi Masuk> Arahkan Pelanggan ke Dasbor Akun setelah Masuk> Tidak
Jawaban:
Plugin adalah solusi yang lebih baik dalam hal ini karena kelas tambahan Anda mungkin perlu diperbarui ketika Magento 2 memperbarui.
Berikut adalah solusi menggunakan after-plugin pada LoginPost-> execute () seperti yang disarankan oleh Xenocide8998.
/Vendor/Module/etc/frontend/di.xml
:/Vendor/Module/Plugin/LoginPostPlugin.php
:sumber
Saya mengatasinya dengan mengganti kelas LoginPost
etc / di.xml
Vendor / Modul / Pengendali / Akun / LoginPost.php
sumber
afterExecute()
akan menjadi opsi yang lebih bersihBahwa penyimpanan lokal saat ini menyebabkan masalah kami.
Jika kami mengaktifkan atau menonaktifkan
Redirect Customer to Account Dashboard after Logging in
dan Guest Checkout dalam Konfigurasi, fitur ini akan berfungsi dengan baik. Namun, kami perlu menghapus penyimpanan lokal Anda.Kami dapat memeriksa penyimpanan lokal
localStorage.getItem('mage-cache-storage')
.Lihatlah:
vendor / magento / module-checkout / view / frontend / web / js / sidebar.js
Magento akan menetapkan cookie
$.cookie('login_redirect', this.options.url.checkout)
berdasarkancustomerData
dari penyimpanan lokal.Dari pengontrol
vendor/magento/module-customer/Controller/Account/LoginPost.php
. Ini akan memeriksa URL pengalihan dari cookie.Versi Magento:
-Magento versi 2.1.0
sumber
Saya menyelesaikan ini dengan melewati referer di pengontrol modul kustom.
Langkah1 `
Langkah 2
Buka Admin: Toko> Konfigurasi> Pelanggan> Konfigurasi Pelanggan> Opsi Masuk> Arahkan Pelanggan ke Dasbor Akun setelah Masuk> Tidak
sumber