Проблема с AjaxForm
Всем привет.
Столкнулся с такой проблемой:
На страницу через чанк выводится pop-up форма, чанк выводится вот так:
Так вот, когда в поле доп поле form.emailTo указана 1 почта, как пример example@mail.ru, то всё работает и всё хорошо, но как только я указываю дополнительную почту example@mail.ru,example2@mail.ru то, popup форма перестаёт отправлять сообщение, а так же вместо «Спасибо! Ваше сообщение успешно отправлено» я получаю «Форма успешно отправлена».
Открытые же формы работают без проблем что так, что так.
Может кто то сталкивался с подобной проблемой?
В логах ошибок сайта пусто.
Возможно проблема не в AjaxForm конечно
Столкнулся с такой проблемой:
На страницу через чанк выводится pop-up форма, чанк выводится вот так:
{include 'POP_UP'}
Внутри вот такая конструкция{'!AjaxForm' | snippet : [
'snippet' => 'FormIt',
'form' => 'form_tpl.Callback_popup',
'hooks' => 'spam,email',
'emailTpl' => 'form_tpl_report.Callback_popup',
'emailTo' => '[[#1.form.emailTo]]',
'emailFrom' => '{$_modx->config.emailsender}',
'emailFromName' => '{$_modx->config.site_name}',
'emailSubject' => 'Заказ звонка с {$_modx->config.site_url}',
'validate' => 'workemail:blank,phone:required',
'validationErrorMessage' => 'В форме содержаться ошибки!',
'successMessage' => 'Спасибо! Ваше сообщение успешно отправлено',
]}
Так же на страницах есть формы которые выводятся похожей конструкцией только напрямую в шаблоне (Открытые формы)Так вот, когда в поле доп поле form.emailTo указана 1 почта, как пример example@mail.ru, то всё работает и всё хорошо, но как только я указываю дополнительную почту example@mail.ru,example2@mail.ru то, popup форма перестаёт отправлять сообщение, а так же вместо «Спасибо! Ваше сообщение успешно отправлено» я получаю «Форма успешно отправлена».
Открытые же формы работают без проблем что так, что так.
Может кто то сталкивался с подобной проблемой?
В логах ошибок сайта пусто.
Возможно проблема не в AjaxForm конечно
Комментарии: 13
Попробуйте параметр написать внутри чанка так:
'emailTo' => (1 | resource : 'form.emailTo'),
{'!AjaxForm' | snippet : [
...
'emailFrom' => '{$_modx->config.emailsender}',
...
]}
— нет нужды для повторного открытия {}, т.к. в самом сниппете они уже используются => вы уже внутри синтаксиса fenom. Так будет правильнее:{var $emailto = 1 | resource : 'form.emailTo'}
{'!AjaxForm' | snippet : [
'snippet' => 'FormIt',
'form' => 'form_tpl.Callback_popup',
'hooks' => 'spam,email',
'emailTpl' => 'form_tpl_report.Callback_popup',
'emailTo' => $emailto,
'emailFrom' => $_modx->config.emailsender,
'emailFromName' => $_modx->config.site_name,
'emailSubject' => 'Заказ звонка с ' ~ $_modx->config.site_url,
'validate' => 'workemail:blank,phone:required',
'validationErrorMessage' => 'В форме содержаться ошибки!',
'successMessage' => 'Спасибо! Ваше сообщение успешно отправлено',
]}
Спасибо. Я правильно понимаю, что вот этот код
{var $emailto = 1 | resource : 'form.emailTo'}
я могу указать в одном месте на всех страницах, и использовать $emailto во всех остальных формах на сайте?
Таким методом нет — у переменной будет ограниченная область видимости.
Есть 2 варианта:
— засунуть е-мейл в плейсхолдер:
— воспользоваться дополнением clientconfig и вынести ваш е-мейл в системную настройку, которую в дальнейшем можно будет получить так:
Есть 2 варианта:
— засунуть е-мейл в плейсхолдер:
{var $emailto = 1 | resource : 'form.emailTo'}
{$_modx->setPlaceholder('emailto', $emailto)}
и в последующем получать его в любом коде, инициализированном после записи плейсхолдера:{$_modx->getPlaceholder('emailto')}
— воспользоваться дополнением clientconfig и вынести ваш е-мейл в системную настройку, которую в дальнейшем можно будет получить так:
{$_modx->config.emailto}
Спасибо, большое. Оба варианта рабочие
Добрый день. Чтобы не создавать новый топик опишу ситуацию здесь.
Имею такой вызов сниппета AjaxForm
Но вот данные для emailSubject планировал брать из скрытого поля
Но если использовать такую конструкцию в вызове
Я где-то что-то упустил? Спасибо
Имею такой вызов сниппета AjaxForm
{'!AjaxForm'|snippet:[
'snippet' => 'FormIt',
'form' => '@FILE chunks/feedback/feedback_form.tpl',
'emailTpl' => '@FILE chunks/feedback/feedback_letter.tpl',
'hooks' => 'chekSpamProtectionMessageKey,checkSpam,email,FormItSaveForm',
'formName' => 'Форма'
'formFields' => 'name,email,phone,message',
'fieldNames' => 'name==Имя отправителя,email==Электронная почта,phone==Телефон,message==Сообщение',
'emailTo' => 'email_to'|config,
'emailSubject' => $_modx->getPlaceholder('email_subject'),
'emailReplyTo' => $_modx->getPlaceholder('email'),
'emailFrom' => 'email_from'|config,
'emailFromName' => 'site_name'|config,
'validate' => 'name:required,email:email:required,message:required,nospam:blank,usecontrol:blank',
]}
Соответственно значение emailReplyTo берется из поля email отправляемой формы. И оно удачно отправляется.Но вот данные для emailSubject планировал брать из скрытого поля
<input type="hidden" name="email_subject" id="af_email_subject" value="Форма обратной связи">
значение которого меняется в зависимости от шаблона и выбранных настроек, чтобы не плодить формы.Так вот оно не отправляется. Письма приходят без темы.Но если использовать такую конструкцию в вызове
'emailSubject' => '[[+email_subject]]',
то всё работает.Я где-то что-то упустил? Спасибо
А где определяется плэйсхолдер email_subject?
там же где и email, в форме, только email_subject определён заранее, до отправки, а email непосредственно в момент
Вот я и спрашиваю где определен и зачем его получать $_modx->getPlaceholder('email_subject'), если он определен как ТВ то надо так $_modx->resource.email_subject, если в ClientConfig или системных настройках то так $_modx->config.email_subject
нет, он определен значением скрытого инпута в форме.
emailReplyTo = input name=«email»
emailSubject = input name=«email_subject»
<input type="hidden" name="email_subject" id="af_email_subject" value="Форма обратной связи">
Таким образом:emailReplyTo = input name=«email»
emailSubject = input name=«email_subject»
А значение скрытого инпута откуда берётся?
По умолчанию данных хранятся в чанке формы (value=«Форма обратной связи»), иногда меняется средствами JS, как раз для того, чтобы были разные темы писем.
Я для себя давно решил, что если какой-то вариант не срабатывает, зачастую быстрее придумать другой, нежели выяснять почему не работает этот. Поэтому я бы на вашем месте написал хук который бы из $_POST брал нудное значение и клал в свойства скрипта.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.