Передадим переменную с настройки темы с адресом электронной почты во все формы Magic Forms. Форм много, а менять только в одном месте.
Документация Magic Forms сообщает что мы можем дополнить события до и после отправки формы.
use Event;
==
public function boot() {
# До сохранения формы в БД
Event::listen('martin.forms.beforeSaveRecord', function (&$formdata, $component) {
$formdata['somefield'] = "НОВОЕ ЗНАЧЕНИЕ";
});
# После сохранения формы
Event::listen('martin.forms.afterSaveRecord', function (&$formdata, $component) {
var_dump($formdata);
});
}
Это событие мы можем использовать для разных случаев: отправить лид в crm, телеграм и т.п.
Там же можно вытащить нужный email из настроек темы и разом указать e-mail в событии martin.forms.beforeSaveRecord
use Cms\Classes\Theme;
==
$theme = Theme::getActiveTheme();
$email = $theme->email;
$component->setProperty('mail_recipients', [$email]);
public function boot() {
Event::listen('martin.forms.beforeSaveRecord', function (&$formdata, $component) {
// Получаем значение из формы с помощью $formdata
$department = $formdata['department'];
// Получить адрес электронной почты отдела
switch ($department) {
case 'marketing':
$email = 'marketing@company.com';
break;
case 'sales':
$email = 'sales@company.com';
break;
default:
$email = 'hello@company.com';
break;
}
// Переопределяем получателей компонентной почты
$component->setProperty('mail_recipients', [$email]);
});
}
В настройки темы можем добавить все отделы со всеми почтами и дописать этот вариант.
Опубликовано 18 марта 2021 г. в категориях: October CMS Magic Forms
Если Вам необходимо внедрить данную разработку на свой проект, свяжитесь со мной, обсудим цену и срок.