我正在一个网站上工作,客户需要有多个单独的联系表格(一个用于联系,一个用于"请求报价"另一对用于类似的东西)。
我已经设法创建了另一个包含其他字段的联系表单,但它是联系人,因此字段只是名称,电子邮件,主题和消息。
现在我已经拥有了#34;骨架"其他人,但我的问题是:有没有办法利用"联系"后端发送电子邮件?或者我需要另一个控制器来管理它们?
如果是这样,你能告诉我一些链接或一段代码吗?
提前致谢。
答案 0 :(得分:4)
要执行您想要的操作,需要自定义控制器来传递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数据中的参数。
随时跟进,我会更新答案,尽我所能帮助您!
以下是您为实现这一目标所需要的简明清单:
core/email_template
模型。core/email_template
的自定义电子邮件模板,用于显示收件人看到的电子邮件中的数据。