Как получить значения TV-полей и других полей сохраняемого ресурса - в плагине с событиями OnBeforeDocFormSave или OnDocFormSave

Зделал создание тикета без регистрации, альтернативным способом, указанном в заметке: modx.pro/solutions/5288

Что-то типа вопрос-ответ, но каждый вопрос-ответ отдельный ресурс.

Однако уведомление администратору не приходит.

Сделал TV-поля с Именем и Еmail

Сделал 2 плагина, один для администратора, в котором прописал email администратора — уведомления идут.

Второй плагин для незарегистрированного пользователя, однако TV-параметры получить не могу.

Пробовал так:
$modx->resource($email_author_vo);
Ничего не выходит...

Вот плагин, который сохраняет тикет неопубликованным и должен отсылать сообщение на email пользователю:
<?php
	switch ($modx->event->name) {
		case 'OnBeforeDocFormSave':
			
			if ($mode == 'new' && $resource->class_key == "Ticket") {  
             	  		 $resource->set('published', 0);
            	
             	
/*Активируем почтовый сервис MODX*/
$modx->getService('mail', 'mail.modPHPMailer');
$modx->mail->set(modMail::MAIL_FROM, $modx->getOption('emailsender'));
$modx->mail->set(modMail::MAIL_FROM_NAME, $modx->getOption('site_name'));

/*Адрес получателя нашего письма... <strong>КАК СЮДА ПОЛУЧИТЬ TV-ПОЛЕ С EMAIL?</strong>... 
Если прописать реальный email, то на него письма идут*/
$modx->mail->address('to', $resource->getTVValue('email_author_vo'));


/*Заголовок сообщения*/
$modx->mail->set(modMail::MAIL_SUBJECT, 'Вы задали новый вопрос');


/*Подставляем чанк с телом письма (предварительно его нужно создать)*/
$modx->mail->set(modMail::MAIL_BODY, 'Вы задали вопрос на сайте');

/*Отправляем*/
$modx->mail->setHTML(true);
if (!$modx->mail->send()) {
    $modx->log(modX::LOG_LEVEL_ERROR,'Произошла ошибка при попытке отправить письмо: '.$modx->mail->mailer->ErrorInfo);
}
$modx->mail->reset();     		 
             	  		 
			}
			
			$resource->save();
 
		break;
	}
Как получить значения TV-полей в такой плагин — с событиями "OnBeforeDocFormSave" или "OnDocFormSave"?

Думаю и с получением и других полей сохраняемого ресурса также имеет место проблема.

Хотелось бы еще сделать, чтобы при публикации тикета из админки приходило уведомление создателю тикета на email из TV-поля $email_author_vo

Может есть иной способ сделать уведомления при создании тикета администратору и пользователю, создвшему тикет (задавшему вопрос), лучше даже при сохранении в черновики, а после ответа на вопрос и публикации этого тикета, отсылать уведомление задавшему вопрос о публикации ответа (то есть этого тикета)?
Дмитрий
08 апреля 2019, 22:53
modx.pro
1 479
0

Комментарии: 1

Дмитрий
09 апреля 2019, 03:07
0
Значения TV и других полей получил так:
// Получаем значения нужных полей
$resource = $modx->getObject('modResource', $id);
$author_vo = $resource->getTVValue('author_vo');
$email_author_vo = $resource->getTVValue('email_author_vo');
$theme_vo = $resource->get('pagetitle');
$text_vo = $resource->get('content');

Хотелось бы еще сделать, чтобы при публикации тикета из админки приходило уведомление создателю тикета на email из TV-поля:
$email_author_vo

Однако чтобы приходило только один раз, в дальнейшем, при редактировании/снятии с публикации и последующей публикации и др., сообщение больше не отправлялось.

Подскажите в какую сторону копать, какое событие применить? Может уже есть готовое решение, но я его пока не нашел.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1