Saat ini saya mengalami masalah dengan formulir frontend di mana tombol formulir entah bagaimana ditimpa dan menampilkan kunci formulir yang salah. Saat ini saya sedang men-debug masalah ini pada formulir login pelanggan.
Ini adalah snapshot dari kode di login.phtml, yang saya setup untuk melihat apa nilai formkey itu.
<?php
$retrievedKey = $block->getBlockHtml('formkey');
echo $retrievedKey ;
// i made a breakpoint and inspected $retrievedKey, it returned a html output <input> ... </input> with a form key value of, let's name it 'keyA'.
?>
ok jadi sekarang setelah saya melanjutkan eksekusi kode, itu membuat halaman berhasil.
Dan sekarang saya pergi untuk memeriksa input kunci form tersembunyi pada browser chrome saya, namun, ia mencetak form key yang sama sekali berbeda dari ' KeyA '. Mari beri nama kunci formulir baru ini ' KeyB '.
Sekarang saya mencoba dan melakukan login, dan mengirimkan formulir. Saya memeriksa permintaan yang dikirim, dan memang melewati variabel kunci dari nilai yang mencerminkan 'KeyB'.
Saya telah menempatkan beberapa breakpoint pada fungsi ' validasi ' dari
Magento \ Framework \ Data \ Form \ FormKey \ Validator
Ini adalah pemeriksa perbandingan saya. Dengan benar, $ formKey dan $ a harus cocok. Namun, tidak demikian.
$formKey = $request->getParam('form_key', null); // outputs 'KeyB'
$a = $this->_formKey->getFormKey(); // outputs 'KeyA'
Jadi, validasi gagal, dan itu mengarahkan saya kembali ke halaman login tanpa pesan kesalahan apa pun.
Hal yang perlu diperhatikan:
- Perilaku ini hanya muncul di chrome dan Microsoft EDGE.
- Firefox berfungsi dengan baik, tidak ada penulisan ulang yang terjadi
- Kunci formulir yang dicetak tampaknya berubah pada setiap penyegaran. $ recovervedKey tidak me-refresh setiap waktu
Hal yang saya coba:
- setup: upgrade dan setup: static-content: deploy
- var / cache dibersihkan dan var / generasi
- menghapus cache browser dan mode penyamaran
Aku hanya tidak bisa membayangkan mengapa form-key ditimpa?
Setiap bantuan atau petunjuk mengapa ini terjadi akan sangat bagus. Terima kasih sudah membaca
Pembaruan - Saya telah melakukan beberapa debugging dan saya pikir bahwa page-cache.js menyebabkan masalah dengan mengatur kembali form form. Ini disebabkan oleh fakta bahwa, ini sedang memeriksa cookie saya jika cookie 'form_key' disetel, jika tidak, buat kunci formulir baru dan simpan ke cookie. Masalahnya adalah, itu tidak dapat menyimpan cookie, itu sebabnya ia terus membuat kunci formulir baru.
Perbarui - Saya telah memecahkan masalah. Ini karena masalah domain cookie. Terima kasih
Jawaban:
Untuk kasus saya, saya menggunakan localhost di URL sehingga solusi berikut membantu saya.
Jika Anda menggunakan localhost di URL Anda di komputer lokal, maka gantilah dengan IP.
Maksud saya jika URL Anda
http: // localhost / Magento2 /
gantikan dengan
http://127.0.0.1/Magento2/
Semoga ini akan bekerja untuk Chrome & Edge dan Firefox juga.
sumber