В даний час у мене виникають проблеми із формами фронтенда, де клавіші форм якимось чином перезаписуються та відображаються неправильні клавіші форми. Зараз я налагоджую це питання у формі реєстрації клієнта.
Це знімок коду на login.phtml, який я налаштовую, щоб побачити, що таке значення formkey.
<?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'.
?>
Ок, так що після того, як я продовжив виконання коду, це відображає сторінку успішно.
І тепер я переходжу перевірити прихований вхідний ключ ключа мого хромованого браузера, однак він видає абсолютно інший ключ форми від " KeyA ". Давайте назвемо цей новий ключ форми " KeyB ".
Тепер я намагаюся зробити логін та подати форму. Я перевірив запит, який надсилається, і він дійсно передає змінну ключової форми форми, яка відображає "KeyB".
Я поставив кілька точок перерви у функції " перевірити "
Magento \ Framework \ Data \ Form \ FormKey \ Validator
Це моя перевірка порівняння. По праву $ formKey та $ a повинні відповідати. Однак це не так.
$formKey = $request->getParam('form_key', null); // outputs 'KeyB'
$a = $this->_formKey->getFormKey(); // outputs 'KeyA'
Таким чином, перевірка не вдається, і вона перенаправляє мене назад на сторінку входу, не маючи повідомлення про помилку .
Що слід зазначити:
- Така поведінка виникає лише у chrome та Microsoft EDGE.
- Firefox працює чудово, перезапис не відбувається
- Клавіша форми, яка роздруковується, схоже, змінюється при кожному оновленні. $ retrievedKey не оновлюється кожен раз
Що я спробував:
- налаштування: оновлення та налаштування: статичний контент: розгортання
- очищений var / cache та var / generation
- очищений кеш браузера та анонімний режим
Я просто не можу голову навколо, чому форма-ключ перезаписується?
Будь-яка допомога чи підказки, чому це відбувається, було б чудово. Дякуємо за прочитане
Оновлення - я зробив деяку налагодження, і я зрозумів, що page-cache.js викликає проблему, встановивши ключ форми знову. Це пов’язано з тим, що він перевіряє мої файли cookie, чи встановлено печиво 'form_key', якщо ні, створити новий ключ форми та зберегти на кукі. Проблема в тому, що він не в змозі зберегти файл cookie, тому він продовжує створювати нові клавіші форми.
Оновлення - я вирішив проблему. Це пов’язано з проблемами домену файлів cookie. Дякую