无法在Observer中设置自定义值

时间:2013-12-03 15:45:59

标签: magento

我的newsletter_subcriber表中有一个名为'is_synchronized'的自定义列。 这是一个tinyint字段,当管理员将订户同步到外部应用程序时,该字段会更改为1.

如果客户/访客取消订阅,我会使用事件'newsletter_subscriber_save_before'将值更改回0。

我可以读取订阅者的信息,但我无法更改'is_synchronized'的值。 请在我的观察员中查看以下代码

$subscriber = $observer->getEvent()->getSubscriber();

if($subscriber->getSubscriberStatus() == '3'):

    $sub = Mage::getModel('newsletter/subscriber')->load(intval($subscriber->getSubscriberId()));
    $sub->setIsSynchronized(0);
    try{
        $sub->save();
    } catch(Exception $e){
        Mage::log($e->getMessage());        
    }
endif;

有人可以告诉我为什么我无法更新订阅者吗?有更适合的活动吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

看看@ Magento - no event for newsletter subscribe & unsubscribe

在Observer.php中:

public function subscriberSync(Varien_Event_Observer $observer) 
{

    $subscriber = $observer->getEvent()->getSubscriber();

    if($subscriber->getSubscriberStatus() == '3'){
        $subscriber->setIsSynchronized(0);
    }

}

您的上述代码不起作用,因为您在观察者中保存,然后数据将被覆盖(或无限循环)。