Magento,将产品名称传递给联系表格

时间:2012-01-25 22:42:17

标签: php html zend-framework magento content-management-system

你好,来自Magento的初学者,我对术语和名字知之甚少但我会尽力解释这个问题尽可能清楚。

我目前正在配置 Magento联系表,以便能够在产品视图页面上收集用户的一些数据。
更有趣的是,表单还将发送一些关于产品页面管理员放置产品的数据,具体来说是产品名称
并非所有产品都具有此形式,只有可以提供不同(当前不可用)颜色和尺寸的产品 我将Magento联系表格复制到我的Layout->Templates->contact->form.phtml。将其嵌入其中一个产品页面,输入:
Magento Admin Panel-Catalog-Menage Categories-OneOfTheProducts-edit-Custom layout update

以下参考xml:

<reference> 
  <block type="core/template" name="customer_request"  
   template="contacts/form.phtml"/>
</reference>

测试它并且它有效,仍然管理员必须在许多产品中执行此xml自定义布局更新文本框,但这不是此问题的一部分。
Magento表格有以下字段:姓名,电子邮件,电话,评论 但是,我需要再向postAction Mage_Contacts_IndexController行动发送一个参数,这就是产品名称。

问题
如何从产品页面的联系表单中获取产品名称,此子块元素是否可以了解正在嵌入的页面内容?我可以使用Magento中的一些全局函数以及如何将此参数传递给控制器​​,我应该使用隐藏的输入字段还是......?

任何参考或代码段对我来说意味着一个世界

2 个答案:

答案 0 :(得分:2)

的解决方案

form.phtml中将此代码段添加到新的隐藏字段值,它检索当前页面的URL键/值,然后加载传递“id”值的模型对象:

<?php $productId=$this->getRequest()->getParams();   
$model = Mage::getModel('catalog/product');  
$_product = $model->load($productId["id"]);   
echo $_product->getName(); ?>

在引用该隐藏字段值的电子邮件模板中添加了新的var, 此部分代码也将成为放置在helpers类中的好选择。

答案 1 :(得分:1)

另一种方法是使用Magento注册表:

$_product = Mage::registry('current_product');

这样可以不必加载另一个数据库模型导致的数据库加载效率。请参阅herehere