Magento - 单独的联系表格

时间:2015-03-23 18:06:04

标签: magento contact-form

我正在一个网站上工作,客户需要有多个单独的联系表格(一个用于联系,一个用于"请求报价"另一对用于类似的东西)。

我已经设法创建了另一个包含其他字段的联系表单,但它是联系人,因此字段只是名称,电子邮件,主题和消息。

现在我已经拥有了#34;骨架"其他人,但我的问题是:有没有办法利用"联系"后端发送电子邮件?或者我需要另一个控制器来管理它们?

如果是这样,你能告诉我一些链接或一段代码吗?

提前致谢。

1 个答案:

答案 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数据中的参数。

随时跟进,我会更新答案,尽我所能帮助您!

以下是您为实现这一目标所需要的简明清单:

  • 一个自定义控制器,用于接受表单POST数据并将其传递给core/email_template模型。
  • 前端指向控制器网址的自定义表单(已完成!)
  • core/email_template的自定义电子邮件模板,用于显示收件人看到的电子邮件中的数据。