【问题标题】:Magento: create custom field for group and pass data to observerMagento:为组创建自定义字段并将数据传递给观察者
【发布时间】:2015-07-17 13:09:26
【问题描述】:

我正在尝试在 Magento 单页结账时添加一个用于选择客户组的下拉菜单,之后我需要将该信息保存在客户资料中。

我的帐单 PHTML:

 <div class=”select”
    <label for=”billing:group_id”><?php echo $this->__('Select Group') ?> <span class=”required”>*</span></label><br />
    <select id=”billing:group_id” name=”billing[group_id]” title=”<?php echo $this->__('Customer Group') ?>” class=”validate-select”>
        <option value=””><?php echo $this->__('Select Group') ?></option>
        <?php
            $groups = Mage::getResourceModel('customer/group_collection')
            ->addFieldToFilter('customer_group_id', array('gt'=> 0))
            ->load()
            ->toOptionArray();
        foreach ($groups as $a)
        echo "<option value='".$a['value']."'>". $a['label']. "</option>";
        ?>
    </select>
</div>

我的观察者.php

public function customerSaveBefore($observer)
    {
        try {
            $customer = $observer->getCustomer();
            $group= $this->getRequest()->getPost('group_id');
            $customer->setData('group_id', $group);
        } catch ( Exception $e ) {
            Mage::log("customer_save_before observer failed: " . $e->getMessage());
        }
    }

我的 config.xml:

<customer_save_before>
    <observers>
        <qwe_customer_save_observer>
            <type>singleton</type>
            <class>Ntt_Customer_Model_Observer</class>
            <method>customerSaveBefore</method>
        </qwe_customer_save_observer>
    </observers>
</customer_save_before>

谁能解释我如何将下拉值传递给观察者?我整天都在努力完成这项工作:(

【问题讨论】:

    标签: php magento


    【解决方案1】:

    只有一个错误,组 id 的表单字段名称是 billing['group_id']。试试下面的代码

    function customerSaveBefore($observer) {
         try { 
           $customer = $observer->getCustomer(); 
           $post= Mage::app()->getRequest()->getPost('billing'); 
            $customer->setData('group_id', $post['group_id']); 
          } 
          catch ( Exception $e ){ 
              Mage::log("customer_save_before observer failed: " . $e->getMessage()); 
          } 
    

    【讨论】:

      猜你喜欢
      • 2016-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-23
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多