I have created an admin form which contains name and catalog price rule conditions. I have saved these values in a custom table. The conditions are saved as serialized. Now I want to check these conditions against each product in catalog product list page, product page, widgets etc. If the condition satisfied then need to display the name in each product.

How can I do this. Please help me.


You can use as example the standard Magento class Magento\Rule\Model\AbstractModel or just extend it in your custom class. The algorithm is pretty simple:

1) Load conditions data ($conditionsSerialized = $this->getConditionsSerialized())) and unserialize it ($conditions = $this->serializer->unserialize($conditionsSerialized);)

2) Get the conditions object (instance of \Magento\Rule\Model\Condition\Combine or what ever you use) and load it using recently loaded data as array ($this->_conditions->loadArray($conditions);)

3) Validate your object using this condition ($this->_conditions->validate($object);)

  • This validate only the customer group, dates and website Ids. I want to validate against the product too. ie, in product view I want to check the rule is applicable for this product or not – Jancy Abraham May 20 at 3:18
  • @JancyAbraham The conditions class is responsible for the product validation, so you should update it if you wish to add custom validation. – Siarhey Uchukhlebau May 20 at 7:35
  • Can you please explain it briefly. – Jancy Abraham May 20 at 7:40
  • @JancyAbraham I'll try to create a simple example for you with all classes – Siarhey Uchukhlebau May 20 at 7:51
  • Can I get the example please. – Jancy Abraham May 23 at 5:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.