2012-05-30 56 views
2

我需要以編程方式閱讀magento中的購物車價格規則的條件。閱讀促銷規則條件 - Magento

Mage_SalesRule_Model_Rule有一個方法getConditionsSerialized()它確實提供了條件,但一個神祕的方式,至少可以說,如下列:

a:7:{s:4:"type";s:32:"salesrule/rule_condition_combine";s:9:"attribute";N;s:8:"operator";N;s:5:"value";s:1:"1";s:18:"is_value_processed";N;s:10:"aggregator";s:3:"all";s:10:"conditions";a:1:{i:0;a:5:{s:4:"type";s:32:"salesrule/rule_condition_address";s:9:"attribute";s:13:"base_subtotal";s:8:"operator";s:2:">=";s:5:"value";s:1:"1";s:18:"is_value_processed";b:0;}}} 

有誰知道如何以更人性化的方式PLZ閱讀條件?我希望能夠閱讀某些屬性。

非常感謝!

Krt_Malta

回答

2

您可以使用php的unserialize函數將其轉換爲可工作的數組。

試試這個:

$conditions = unserialize($rule->getConditionsSerialized()); 
print_r($conditions); 

我如何這些工作之前博客,雖然我的職位是創建規則,但它仍然介紹了一點有關你會如何來了解情況。

Here's my post

希望它能幫助!

1

unserialize($rule->getConditionsSerialized())的伎倆!

希望它可以幫助別人!

1

Magento已經實現了一個函數來爲自己反序列化條件和動作,所有你需要做的就是使用它。

$conditions = Mage::getModel('salesrule/rules')->load($ruleId)->getConditions();

->getConditions()每次調用將讓你內執行的規則對象更深的條件。

例如,您第一次致電->getConditions()時,它將返回一個對象類型Mage_SalesRule_Model_Rule_Condition_Combine,它是所有內部條件的默認包裝器。如果再次鏈接電話->getConditions()->getConditions(),您將獲得一個數組,其中包含[X]個條件對象,您通過adminhtml接口創建它們時聲明的每個類型。

避免使用unserialize()並開始使用Magento內置函數。