【问题标题】:Pass data between observer methods在观察者方法之间传递数据
【发布时间】:2018-03-23 11:32:13
【问题描述】:

我目前正在开发模块,女巫必须编写自定义数据来订购和报价。此数据是从一步/结帐传递的。我通过编辑模板在运输方式部分添加了复选框。

到目前为止,我已经为订单和报价创建了属性,安装脚本女巫显示在表格中:

$installer = $this;
$installer->startSetup();
$installer->addAttribute('order', 'stoque', array(
    'type'              =>'int',
    'label'             => 'Que to service station',
    'global'            => 1,
    'visible'           => 1,
    'required'          => 0,
    'user_defined'      => 1,
    'searchable'        => 0,
    'filterable'        => 0,
    'comparable'        => 0,
    'visible_on_front'  => 1,
    'visible_in_advanced_search' => 0,
    'unique'            => 0,
    'is_configurable'   => 0,
    'position'          => 1,
));
$installer->addAttribute('quote', 'stoque', array(
    'type'              =>'int',
    'label'             => 'Que to service station',
    'global'            => 1,
    'visible'           => 1,
    'required'          => 0,
    'user_defined'      => 1,
    'searchable'        => 0,
    'filterable'        => 0,
    'comparable'        => 0,
    'visible_on_front'  => 1,
    'visible_in_advanced_search' => 0,
    'unique'            => 0,
    'is_configurable'   => 0,
    'position'          => 1,
));
$installer->endSetup();

这里是 config.xml 全局部分

    <models>
        <modulename>
            <class>Vendor_Module_Model</class>
        </modulename>
    </models>
    <fieldsets>
        <sales_convert_quote>
            <attributename><to_order>*</to_order></attributename>
        </sales_convert_quote>

        <sales_convert_order>
            <attributename><to_quote>*</to_quote></attributename>
        </sales_convert_order>
    </fieldsets>
    <modulename_write>
        <connection>
            <use>core_write</use>
        </connection>
    </modulename_write>
    <modulename_read>
        <connection>
            <use>core_read</use>
        </connection>
    </modulename_read>
    <resources>
        <modulename_setup>
            <setup>
                <module>Vendor_Module</module>
                <class>Mage_Sales_Model_Mysql4_Setup</class>
            </setup>
        </modulename_setup>
    </resources>
    <events>
        <checkout_controller_onepage_save_shipping_method>
            <observers>
                <modulename_observer>
                    <class>modulename/observer</class>
                    <method>setStoqueVal</method>
                </modulename_observer>
            </observers>
        </checkout_controller_onepage_save_shipping_method>
        <checkout_type_onepage_save_order>
            <observers>
                <modulename_observer_order>
                    <class>modulename/observer</class>
                    <method>saveDataToOrder</method>
                </modulename_observer_order>
            </observers>
        </checkout_type_onepage_save_order>
    </events>
</global>

这是观察者类:

protected $_stoQue;

public function setStoqueVal($observer){
    $fieldVal = Mage::app()->getFrontController()->getRequest()->getParam('stoque');
    if($fieldVal){
        $this->_stoQue = true;
    }else{
        $this->_stoQue = false;
    }
}
public function saveDataToOrder($observer) {

    var_dump($this->_stoQue);

    die;
}

HTML:

 <input type="checkbox" name="stoque" class="stoque-checkbox">

您可以看到我尝试更改$ this-> _ stoque值。它在 setStoqueVal 方法中发生了更改,但是当我尝试在 saveDataToOrder 方法中获取此值时,即使在 config.xml 中设置了单例,它也会返回 NULL。 到目前为止,我已经尝试通过寄存器传递它,但仍然没有用。

非常感谢您的帮助。

【问题讨论】:

    标签: magento-1.9 observers


    【解决方案1】:

    好的,所以我在没有传递数据的情况下解决了这个问题,但只创建了一个观察者并保存数据以首先引用。两个表中的字段名称相似,因此报价中的数据会自动保存到订单中。

    这里是观察者方法:

        public function setStoqueVal($observer){
        $fieldVal = Mage::app()->getFrontController()->getRequest()->getParam('stoque');
        $quote = $observer->getEvent()->getQuote();
        if (!empty($fieldVal) && $fieldVal == "on") {
            $quote->setStoque(1);
            $quote->save();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-29
      相关资源
      最近更新 更多