要做你想做的事,需要一个自定义控制器来传递 POST 数据。
如果您在 ~62 行检查 \app\code\core\Mage\Contacts\controllers\IndexController.php,您会发现 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('some@domain.com', '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 的自定义电子邮件模板,用于显示收件人看到的电子邮件中的数据。