Не могу найти указанный ключ формы action: Не могу найти указанный ключ формы (action). / Русскоязычное сообщество MODX

Содержание

ajaxform не указан ключ формы action

Автор admin На чтение 6 мин. Просмотров 78 Опубликовано

Отредактировано: 14 Ноября 2019

AjaxForm это надстройка для компонента FormIt, которая позволяет отправлять результаты форм используя ajax (можно использовать не только FormIt, но и другие скрипты). Для перехода с FormIt на AjaxForm достаточно изменить запись вызова

Этапы создания Ajax формы на сайте:

  1. Устанавливаем компоненты FormIt и AjaxForm.
  2. Создаем чанк с HTML формой и модификаторами.
  3. Размещаем вызов в соответствующем ресурсе или шаблоне.

Стандартная форма обратной связи

В AjaxForm есть дефолтный вид всплывающих окон об успешной отправке и ошибках, чтобы его изменить, надо указать собственные файлы в параметрах frontend_js и frontend_css.

Пример файла без jGrowl, со статичным сообщением во всплывающем окне с id massage

Содержание

  1. Документация сниппета AjaxForm
  2. AjaxForm
  3. Параметры сниппета
  4. Обработка своим сниппетом
  5. Валидация формы
  6. Событие af_complete
  7. redirect на другую страницу сайта, после успешной отправки формы?
  8. Всплывающие сообщения
  9. Примеры
  10. Отладка
  11. Join GitHub today
  12. AjaxForm / core / components / ajaxform / lexicon / ru / default. inc.php

Документация сниппета AjaxForm

AjaxForm

Cниппет для отправки любых форм через ajax. По умолчанию рассчитан на работу с FormIt, но можно использовать и собственный сниппет.

  • Регистрирует нужные скрипты на фронтенде: jQuery.Form и jQuery.jGrowl.
  • Сохраняет в сессию $scriptProperties при вызове сниппета.
  • Выводит указанную форму, прописывая класс ajax_form и скрытый input для получения $scriptProperties .
  • Вешает обработчик на форму, чтобы она отправлялась через ajax.
  • При отправке запускает указанный сниппет для обработки и возвращает ответ от него.
  • Выводит сообщение об успехе, или ошибки, если есть.

Параметры сниппета

ИмяПо умолчаниюПлейсхолдеры
&formtpl.AjaxForm.exampleОбразец чанка с формой, которую нужно обработать.
&snippetFormItСниппет для обработки формы.
&frontend_css[[+assetsUrl]]css/default.cssСтили оформления формы и полей с ошибками
&frontend_js[[+assetsUrl]]js/default.jsJavascript для отправки формы через ajax
&actionUrl[[+assetsUrl]]action.phpАдрес коннектора, на который отправляется форма

Всё, что вы указываете AjaxForm, будет передано в вызываемый сниппет.

Обработка своим сниппетом

Вы можете использовать собственный сниппет, вместо FormIt, который будет делать что угодно (хоть создавать страницы на сайте). Единственное требование — он обязательно должен возвращать JSON массив с ключами:

  • status — 1 или 0, то есть успех или ошибка.
  • message — сообщение о работе сниппета, выводится если status = 0.
  • data — массив для полей с ошибками, в котором ключами является имя поля, а значением — сообщение об ошибке.

Для удобства работы в параметры сниппета передаётся переменная $AjaxForm с классом компонента, чтобы вы могли вызывать из него методы error и success при выдаче ответа.

Простейший пример своего сниппета:

Этот сниппет ничего не делает, просто возвращает результат проверки имени.

Валидация формы

Сервер может вернуть ошибку отправки формы и массив полей, не прошедших проверку. Этим полям автоматически будет добавлен CSS класс error , который убирается при последующей отправке.

Так же вы можете запретить отправку формы, используя javascript переменную afValidated — если она объявлена и равна false , то форма не будет отправлена.

Обратите внимание, что все проверки на javascript можно обойти, так что эту переменную стоит использовать только для удобства пользователей, а не для реальной проверки данных.

Событие af_complete

При получении ответа от сервера вызывается событие af_complete, которое вы можете использовать для обновления содержимого страницы или другой операции javascript.

Вам просто нужно указать функцию, в которую будет передано событие javascript и объект с ответом от сервера. Обратите внимание, что внутри этого объекта есть и отправляющая форма.

redirect на другую страницу сайта, после успешной отправки формы?

Добавляем id к форме, если его нет и затем в js файл прописать вот такие строки

Можно просто обернуть в и подключить в шаблон с формой ближе к закрытию body.

Всплывающие сообщения

По умолчанию AjaxForm выводит сообщения об успешной отправке формы или о наличии ошибок. Вы можете самостоятельно вызывать их для своих целей:

Вторым параметром можно указать «прилипающий» popup — его нужно будет закрыть вручную, бывает полезно для показа серьёзных ошибок. То есть, просто вызвав сниппет на странице, вы получаете подключенный jQuery.jGrowl и можете показывать приятные всплывающие уведомления на javascript.

Примеры

Отправка email сообщения при помощи FormIt с требованием некоторых полей:

Отладка

При возникновении любых проблем, в первую очередь проверяйте, отправляется ли форма без AjaxForm. Помните, что AjaxForm — сниппет-обёртка, он не отправляет письма и не проводит проверку формы. Это делает ваш сниппет или FormIt.

Так же не забывайте заглядывать в консоль браузера на предмет ошибок javascript. Если сервер выдаёт ошибку 500 при отправке, проверьте параметр register_globals у вашего PHP — он должен быть отключен.

Возникает такая вот ошибка, появилась она недавно и на многих сайтах сразу примерно с месяц назад (заметил только сейчас, клиенты пожаловались что форма не работает). Для простоты пока ищу решение проблемы только на 1 сайте. Форма отправляться в Хроме, в остальных не работает.

Please note that GitHub no longer supports your web browser.

We recommend upgrading to the latest Google Chrome or Firefox.

Join GitHub today

GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.

AjaxForm / core / components / ajaxform / lexicon / ru / default.

inc.php
$_lang [ ‘ ajaxform ‘ ] = ‘ AjaxForm ‘ ;
$_lang [ ‘ af_message_close_all ‘ ] = ‘ закрыть все ‘ ;
$_lang [ ‘ af_submit ‘ ] = ‘ Отправить ‘ ;
$_lang [ ‘ af_reset ‘ ] = ‘ Очистить ‘ ;
$_lang [ ‘ af_label_name ‘ ] = ‘ Имя ‘ ;
$_lang [ ‘ af_label_email ‘ ] = ‘ E-mail ‘ ;
$_lang [ ‘ af_label_message ‘ ] = ‘ Сообщение ‘ ;
$_lang [ ‘ af_err_action_ns ‘ ] = ‘ Не указан ключ формы (action). ‘ ;
$_lang [ ‘ af_err_action_nf ‘ ] = ‘ Не могу найти указанный ключ формы (action). ‘ ;
$_lang [ ‘ af_err_chunk_ns ‘ ] = ‘ Не указан чанк для обработки формы. ‘ ;
$_lang [ ‘ af_err_chunk_nf ‘ ] = ‘ Не могу найти указанный чанк «[[+name]]» с формой. ‘ ;
$_lang [ ‘ af_err_snippet_ns ‘ ] = ‘ Не указан сниппет для обработки формы. ‘ ;
$_lang [ ‘ af_err_snippet_nf ‘ ] = ‘ Не могу найти указанный сниппет «[[+name]]» для обработки формы. ‘ ;
$_lang [ ‘ af_err_has_errors ‘ ] = ‘ Форма содержит ошибки ‘ ;
$_lang [ ‘ af_success_submit ‘ ] = ‘ Форма успешно отправлена ‘ ;
  • © 2019 GitHub , Inc.
  • Terms
  • Privacy
  • Security
  • Status
  • Help

You can’t perform that action at this time.

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.

AjaxForm/default.inc.php at master · modx-pro/AjaxForm · GitHub

Permalink

master

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Go to file

 

Cannot retrieve contributors at this time

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters

Show hidden characters

<?php
$_lang[‘ajaxform’] = ‘AjaxForm’;
$_lang[‘af_message_close_all’] = ‘закрыть все’;
$_lang[‘af_submit’] = ‘Отправить’;
$_lang[‘af_reset’] = ‘Очистить’;
$_lang[‘af_label_name’] = ‘Имя’;
$_lang[‘af_label_email’] = ‘E-mail’;
$_lang[‘af_label_message’] = ‘Сообщение’;
$_lang[‘af_err_action_ns’] = ‘Не указан ключ формы (action).
‘;
$_lang[‘af_err_action_nf’] = ‘Не могу найти указанный ключ формы (action).’;
$_lang[‘af_err_chunk_ns’] = ‘Не указан чанк для обработки формы.’;
$_lang[‘af_err_chunk_nf’] = ‘Не могу найти указанный чанк «[[+name]]» с формой.’;
$_lang[‘af_err_snippet_ns’] = ‘Не указан сниппет для обработки формы.’;
$_lang[‘af_err_snippet_nf’] = ‘Не могу найти указанный сниппет «[[+name]]» для обработки формы.’;
$_lang[‘af_err_has_errors’] = ‘Форма содержит ошибки’;
$_lang[‘af_success_submit’] = ‘Форма успешно отправлена’;

[БЫСТРОЕ ИСПРАВЛЕНИЕ] Недопустимый ключ формы Magento.

Пожалуйста, обновите страницу.

Magento — обширная платформа с большим количеством функций и соответственно кода. Итак, как и на любой другой платформе электронной коммерции, вы столкнетесь с ошибками.

Magento Недопустимый ключ формы. Пожалуйста, обновите страницу — это одна из самых распространенных ошибок Magento, с которыми вы, вероятно, сталкивались. Он может появиться, когда вы:

  • установите расширение Magento 2
  • обновление Magento
  • создать учетную запись на локальном хосте
  • создать настраиваемый продукт с несколькими дочерними продуктами
  • добавить много связанных, перекрестных и допродажных продуктов к любому из продуктов
  • сохранить атрибут с несколькими параметрами
  • назначить много связанных продуктов и сообщений статье в блоге

Таким образом, в основном ошибка «

Magento Invalid Form Key. Пожалуйста, обновите страницу » возникает, когда на сервер передается большой объем данных при отправке формы.

Это руководство поможет вам понять причины недопустимого ключа формы. Пожалуйста, обновите ошибку страницы в Magento и узнайте, как ее легко исправить.

Почему появляется ошибка «Недопустимый ключ формы. Обновите страницу»?

Хотя вы можете столкнуться с этой ошибкой при выполнении различных задач в вашей установке Magento, всегда есть только 3 причины.

Платформа Magento имеет определенные требования к серверу для значения PHP max_input_vars . Это максимальное количество переменных, которые сервер использует для одной функции, чтобы избежать перегрузки.

По умолчанию установлено значение 1000, что недостаточно для Magento и вызывает ошибку.

Кроме того, вы можете столкнуться с этой проблемой на локальном хосте. Он появляется только в том случае, если вы используете «localhost» в качестве базового URL-адреса вместо «127.0.0.1», и Magento просто не распознает его . Это вызывает системную ошибку cookie и, соответственно, ошибку Magento «Неверный ключ формы. Пожалуйста, обновите страницу».

Наконец, вы также можете получить эту ошибку на витрине магазина при попытке отправить некоторые формы. Эта проблема возникает, если у вас старая версия Magento или старая форма, и не весь javascript загружен для выполнения запрошенного действия ( напр. добавить в корзину ).

В более новых версиях Magento кнопка добавления в корзину отключена до тех пор, пока значение _key формы не будет доступно после загрузки всего кода JS.

Что касается причин, у вас есть идеи, как исправить проблему «Неверный ключ формы. Обновите страницу»?

Чтобы исправить «Неверный ключ формы. Обновите страницу»:

После того, как вы определите причины появления ошибки «Magento Invalid Form Key. Пожалуйста, обновите страницу» в вашем магазине, перейдите к соответствующему решению.

Решение 1. Увеличьте max_input_vars в PHP.

Для этого вам нужно отредактировать файл php.ini . Вносите эти изменения только в том случае, если вы знакомы с редактированием файла php.ini. В противном случае попросите вашего хостинг-провайдера или администратора сервера изменить это значение.

  • Войдите на сервер вашего веб-сайта , используя SSH.
  • Найдите папку с файлом php.ini и откройте его через редактор
    vi
    .

  • Измените max_input_vars как минимум на 5000 или 10000 и сохраните файл.

  • Перезапустите веб-сервер.

Решение 2. Измените базовый URL-адрес вашей локальной среды на 127.0.0.1.

Вы можете запустить следующую команду, чтобы изменить его:

 php bin/magento setup:store-config:set --base-url="http://127.0.0.1:8080/ 

Если вы запускаете Magento на HTTPS вы также можете изменить безопасный базовый URL-адрес

 php bin/magento setup:store-config:set --base-url-secure="https://127. 0.0.1:8080/ 

Чтобы вручную изменить базовый URL на локальном хосте:

  • Найдите core_config_data таблица в вашем PHPAdmin.
  • Измените значение web/unsecure/base_url на 127.0.0.1.

  • Очистить кэш для применения изменений через:
 php bin/magento cache:flush 

Решение 3. Обновите Magento или улучшите скорость Magento, чтобы все Javascript загружались достаточно быстро.

Если вы столкнулись с ошибкой «Неверный ключ формы. Обновите страницу», которая появляется на витрине в последней версии Magento, попросите разработчика изучить ее. Им нужно отредактировать шаблон кнопки «Добавить в корзину», чтобы он стал доступен только после загрузки всех JS-скриптов.

Примечание: в случае, если вы используете пользовательское расширение или тему, может быть много причин и, соответственно, исправить маршруты для работы. Обратитесь к разработчикам темы или пользовательского расширения.

Magento «Неверный ключ формы. Пожалуйста, обновите страницу» — это распространенная ошибка, и вы столкнетесь с ней на каком-то этапе. По крайней мере, теперь вы знаете, как это исправить, чтобы работа вашего магазина Magento не прерывалась.

Fix Magento 2 «Неверный ключ формы. Пожалуйста, обновите страницу ‘ошибка — Mageplaza

Если вы ищете » Как исправить ошибку: Magento 2 Неверный ключ формы. Пожалуйста, обновите страницу » или « Как устранить неверный ключ формы Magento 2. Пожалуйста, обновите страницу », да, вы попали в нужное место.

Это не конкретная ошибка в Magento, хотя она широко распространена. Я уверен, что каждый сталкивался с этой ошибкой раньше. Вот некоторые из ваших действий в магазине Magento 2, которые вызывают эту ошибку:

  • Когда вы создаете настраиваемый продукт с несколькими атрибутами
  • При добавлении товара в список желаний
  • Когда вы создаете учетную запись или подписываетесь, добавьте в корзину на локальном хосте
  • При установке нового расширения/темы на Magento 2
  • После обновления версии Magento 2

Действительно, это подробное руководство для вас. В этом руководстве мы поможем вам понять причину этой ошибки, а также способы исправления каждой ошибки.

Без лишних слов, приступим!

Содержание

  • Причины возникновения Magento 2 Invalid Form Key. Пожалуйста, обновите страницу с ошибкой
  • .
  • Как исправить неверный ключ формы Magento 2. Пожалуйста, обновите страницу
    • Решение 1. Увеличьте max_input_vars в php.ini
    • Решение 2. Измените базовый URL-адрес
  • Заключительные слова

Причины возникновения Magento 2 «Неверный ключ формы. Пожалуйста, обновите страницу» ошибка

CAPTION

1. Значение PHP Max_input_vars не оптимизировано для Magento 2

Мы часто сталкивались с этой ошибкой на сайтах клиентов, даже на нашем сайте Magento 2 раньше. Причина ошибки даты заключается в том, что значение Max_input_vars установлено неправильно для Magento 2. По умолчанию значение PHP MAx_input_vars на сервере равно 1000; это означает, что этого недостаточно для Magento 2.

PHP Max_input_vars можно понимать как максимальное количество переменных, которые ваш сервер может использовать для одной функции, чтобы избежать перегрузки (это значение используется в основном для защиты вашего сервера от DDOS-атак)

2. Базовый URL-адрес на Localhost не распознается Система Magento 2

Если вы столкнулись с этой ошибкой на Localhost, мы предполагаем, что вы, вероятно, используете Localhost в качестве базового URL-адреса на своем веб-сайте, а не 127.0.0.1.

Конечно, это вызовет системную ошибку файлов cookie в Magento и сгенерирует Magento 2 Invalid Form Key. Пожалуйста, обновите страницу на вашем сайте.

Как исправить неверный ключ формы Magento 2. Пожалуйста, обновите страницу

С 2 основными причинами этой ошибки, как указано выше. Приведем для них 2 соответствующих решения. Давайте сразу же погрузимся в каждое решение.

Решение 1. Увеличьте max_input_vars в php.ini

В большинстве случаев мы можем устранить ошибку Magento 2 «Недопустимый ключ формы. Пожалуйста, обновите страницу», увеличив значение PHP Max_input_vars до значения, которое требуется Magento 2 для обработки его функций.

Внимательно выполните следующие шаги, чтобы изменить PHP Max_input_vars .

  1. Пожалуйста, войдите на свой сервер, используя SSH с корневым доступом, если вы используете VPS/выделенный сервер.
CAPTION
  1. Введите эту команду php -i | grep 'php.ini' , чтобы найти путь к папке php.ini. Ниже вы увидите образец вывода.
CAPTION
  1. Измените значение Max_input_vars на 10000 (или вы также можете создать, если оно еще не существует). Затем нажмите клавишу ESC и введите :wq , чтобы сохранить эту папку.

  1. И последнее, но не менее важное: перезапустите Apache. Теперь вы можете без проблем сохранить только что созданный продукт.

Решение 2. Измените базовый URL-адрес

Другая возможная причина этой ошибки заключается в том, что система Magento 2 не распознает ваш базовый URL-адрес. Обычно это происходит в локальной среде (localhost). Чтобы решить эту проблему, это просто, вам просто нужно изменить базовый URL-адрес на «127.0.0.1».

php bin/magento setup:store-config:set --base-url="http://127.0.0.1:8080/"

Кроме того, вы можете перейти к своему PHPAdmin и выполнить поиск в следующей таблице: core_config_data, , затем измените значение web/unsecure/base_url на 127.0.0.1:

CAPTION

Если вы устанавливаете Magento 2 для работы на HTTPS, вы можете изменить base-url-secure :

php bin/magento setup:store-config:set --base-url-secure="https://127.0.0.1:8080/"

Наконец, после того, как вы изменили свой базовый URL-адрес, пришло время очистить кеш, чтобы сохранить изменения, выполнив следующую команду:

php bin/magento cache:flush

команда ниже:

sudo rm -rf var/cache var/generation var/page_cache

И последнее, но не менее важное: обновите свой веб-сайт, чтобы узнать, исправлена ​​ли ошибка.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *