【问题标题】:Magento, passing product name to contact formMagento,将产品名称传递给联系表
【发布时间】:2012-01-25 22:42:16
【问题描述】:

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 表单具有以下字段:姓名、电子邮件、电话、评论。
但是我需要再向Mage_Contacts_IndexControllerpostAction 操作发送一个参数,即产品名称。

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

任何参考或代码 sn-p 对我来说都意味着一个世界

【问题讨论】:

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


    【解决方案1】:

    解决方案

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

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

    向引用该隐藏字段值的电子邮件模板添加了新变量, 这部分代码也很适合放在助手类中。

    【讨论】:

    • 在 Alan Storm 逮捕我之前,我必须更正此问题以使用会话而不是隐藏字段。 :D
    【解决方案2】:

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

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

    这将具有不必加载另一个数据库模型导致数据库负载的效率。请参阅herehere

    【讨论】:

      猜你喜欢
      • 2021-05-30
      • 2015-05-03
      • 1970-01-01
      • 2011-09-21
      • 2014-03-11
      • 1970-01-01
      • 1970-01-01
      • 2017-09-25
      • 1970-01-01
      相关资源
      最近更新 更多