E-mail c настроек темы в Magic Forms

Передадим переменную с настройки темы с адресом электронной почты во все формы 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, телеграм и т.п.

Вариант 1. Подставляем e-mail из настроек темы

Там же можно вытащить нужный email из настроек темы и разом указать e-mail в событии martin.forms.beforeSaveRecord

use Cms\Classes\Theme;
==
$theme = Theme::getActiveTheme();
$email = $theme->email;
$component->setProperty('mail_recipients', [$email]);

Вариант 2. Отправляем по условию значения в форме

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

Если Вам необходимо внедрить данную разработку на свой проект, свяжитесь со мной, обсудим цену и срок.

Связаться со мной Fill 1