Вы можете достичь этого, написав пользовательский финишер формы .
- Добавьте в форму скрытое поле, содержащее идентификатор учителя
- Извлеките этот идентификатор в своем финишере и загрузите модель учителя по своему репозиторию
(не полный) пример финишера, который загружает данные получателя из пользовательской модели и отправляет почту на этот конкретныйdata:
class EmailToContactPersonFinisher extends EmailFinisher
{
/**
* Executes this finisher
* @see AbstractFinisher::execute()
*
* @throws FinisherException
*/
protected function executeInternal()
{
/** @var FormRuntime $formRuntime */
$formRuntime = $this->finisherContext->getFormRuntime();
if ($formRuntime->getResponse()->getRequest()) {
if ($formRuntime->getResponse()->getRequest()->hasArgument('contactPerson')) {
$objectManager = GeneralUtility::makeInstance(ObjectManager::class);
/** @var ContactPersonRepository $repository */
$contactPersonRepository = $objectManager->get(ContactPersonRepository::class);
/** @var ContactPerson $contactPerson */
$contactPerson = $contactPersonRepository->findByUid($formRuntime->getResponse()->getRequest()->getArgument('contactPerson'));
}
}
// override contactPerson related options
if ($contactPerson instanceof ContactPerson) {
if ($contactPerson->getEmail()) {
$recipientAddress = $contactPerson->getEmail();
}
}
$this->setOption('recipientAddress', $recipientAddress);
parent::executeInternal();
}
}
Вы также можете взглянуть на стандартный emailFinisher, который дает быстрое представление об архитектуре.sysext / форма / Классы / домен / Finishers / EmailFinisher.php