Чтобы делать то, что вы хотите, необходим пользовательский контроллер для передачи данных POST.
Если вы изучите \app\code\core\Mage\Contacts\controllers\IndexController.php
в строке ~62, вы найдете postAction()
, который вызывается indexAction()
— действие контроллера по умолчанию.
Это метод, который собирает переданные параметры POST и использует модель core/email_template
для отправки электронной почты. Я бы использовал этот код в качестве ссылки для вашего контроллера.
Убедитесь, что вы поместили все это в свой собственный модуль, как всегда, с дополнительными функциями.
Чтобы узнать, что можно и что нельзя передавать в модель core/email_template
, взгляните на \app\code\core\Mage\Core\Model\Email\Template.php
. Там для вас куча документации.
Черт возьми, у него даже есть пример кода!
// Loading of template
$emailTemplate = Mage::getModel('core/email_template')
->load(Mage::getStoreConfig('path_to_email_template_id_config'));
$variables = array(
'someObject' => Mage::getSingleton('some_model')
'someString' => 'Some string value'
);
$emailTemplate->send('[email protected]', 'Name Of User', $variables);
В частности, взгляните на строку ~371, где она передает переменные, которые вы установили, в шаблон электронной почты, указанный в макете.
/**
* Send mail to recipient
*
* @param array|string $email E-mail(s)
* @param array|string|null $name receiver name(s)
* @param array $variables template variables
* @return boolean
**/
public function send($email, $name = null, array $variables = array())
Magento делает то же самое, что и любая контактная форма на простом старом обработчике форм PHP. Он просто делегирует все модели, подобные приведенной выше, поэтому вам не нужно делать так много работы, заново изобретая колесо, как это было раньше. Просто новый контроллер для приема параметров в данных POST.
Не стесняйтесь следить, и я обновлю ответ, чтобы помочь вам, где смогу!
Вот краткий список вещей, которые вам понадобятся для этого:
- Пользовательский контроллер для приема данных POST формы и передачи их в модель
core/email_template
.
- Пользовательская форма во внешнем интерфейсе, указывающая на URL-адрес вашего контроллера (уже сделано!)
- Пользовательский шаблон электронной почты для
core/email_template
, используемый для отображения данных в электронном письме, которое видит получатель.
person
Nick M
schedule
01.04.2015