How do I programmatically load a specified sales rule in Magento 2?












3















In Magento 1 EE, I was able to get sales rule information from product list page with the following:



$rule = Mage::getModel('salesrule/rule')->load($ruleId);
$isActive = $rule->getIsActive();
$fromDate = $rule->getFromDate();
$toDate = $rule->getToDate();
$label = $rule->getStoreLabel();


How can I accomplish the same thing in Magento 2?










share|improve this question

























  • How about your current issue?

    – Khoa TruongDinh
    Sep 15 '16 at 13:18











  • I tried the examples today without any luck. I did find a solution, but I'm not sure if it's the best way to go about it. See below...

    – Mike
    Sep 15 '16 at 18:56


















3















In Magento 1 EE, I was able to get sales rule information from product list page with the following:



$rule = Mage::getModel('salesrule/rule')->load($ruleId);
$isActive = $rule->getIsActive();
$fromDate = $rule->getFromDate();
$toDate = $rule->getToDate();
$label = $rule->getStoreLabel();


How can I accomplish the same thing in Magento 2?










share|improve this question

























  • How about your current issue?

    – Khoa TruongDinh
    Sep 15 '16 at 13:18











  • I tried the examples today without any luck. I did find a solution, but I'm not sure if it's the best way to go about it. See below...

    – Mike
    Sep 15 '16 at 18:56
















3












3








3


1






In Magento 1 EE, I was able to get sales rule information from product list page with the following:



$rule = Mage::getModel('salesrule/rule')->load($ruleId);
$isActive = $rule->getIsActive();
$fromDate = $rule->getFromDate();
$toDate = $rule->getToDate();
$label = $rule->getStoreLabel();


How can I accomplish the same thing in Magento 2?










share|improve this question
















In Magento 1 EE, I was able to get sales rule information from product list page with the following:



$rule = Mage::getModel('salesrule/rule')->load($ruleId);
$isActive = $rule->getIsActive();
$fromDate = $rule->getFromDate();
$toDate = $rule->getToDate();
$label = $rule->getStoreLabel();


How can I accomplish the same thing in Magento 2?







magento2 magento-2.1 rules






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 9 mins ago









Himanshu

812521




812521










asked Sep 13 '16 at 17:51









MikeMike

263




263













  • How about your current issue?

    – Khoa TruongDinh
    Sep 15 '16 at 13:18











  • I tried the examples today without any luck. I did find a solution, but I'm not sure if it's the best way to go about it. See below...

    – Mike
    Sep 15 '16 at 18:56





















  • How about your current issue?

    – Khoa TruongDinh
    Sep 15 '16 at 13:18











  • I tried the examples today without any luck. I did find a solution, but I'm not sure if it's the best way to go about it. See below...

    – Mike
    Sep 15 '16 at 18:56



















How about your current issue?

– Khoa TruongDinh
Sep 15 '16 at 13:18





How about your current issue?

– Khoa TruongDinh
Sep 15 '16 at 13:18













I tried the examples today without any luck. I did find a solution, but I'm not sure if it's the best way to go about it. See below...

– Mike
Sep 15 '16 at 18:56







I tried the examples today without any luck. I did find a solution, but I'm not sure if it's the best way to go about it. See below...

– Mike
Sep 15 '16 at 18:56












2 Answers
2






active

oldest

votes


















2














We can try:



/** @var MagentoSalesRuleModelRule $rule **/
$rule->load($ruleId);
$isActive = $rule->getIsActive();
$fromDate = $rule->getFromDate();
$toDate = $rule->getToDate();
$label = $rule->getStoreLabels();


Or with API:



/** @var MagentoSalesRuleApiRuleRepositoryInterface $rule **/
$rule->getById($ruleId);
$isActive = $rule->getIsActive();
$fromDate = $rule->getFromDate();
$toDate = $rule->getToDate();
$label = $rule->getStoreLabels();


Remember to inject MagentoSalesRuleApiRuleRepositoryInterface or MagentoSalesRuleModelRule on your constructor.



/** @var MagentoSalesRuleApiRuleRepositoryInterface $rule **/

protected $rule;

public function __construct(
MagentoSalesRuleApiRuleRepositoryInterface $rule

) {

$this->rule = $rule;
}





share|improve this answer

































    0














    This seemed to work for me, but I'm not sure it's exactly the way it should be handled or not. Open to suggestions. Thanks.



    $objectManager = MagentoFrameworkAppObjectManager::getInstance();
    $rule = $objectManager->create('MagentoSalesRuleModelRule')->load($ruleId);
    $isActive = $rule->getIsActive();





    share|improve this answer
























    • I'm pretty sure that my answer works well. We need to inject the sale rule model in your constructor.

      – Khoa TruongDinh
      Sep 16 '16 at 0:22











    • How do I inject the constructor? Thanks.

      – Mike
      Sep 16 '16 at 12:53











    • See my update answer.

      – Khoa TruongDinh
      Sep 24 '16 at 2:00











    Your Answer








    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "479"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: false,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: null,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f136130%2fhow-do-i-programmatically-load-a-specified-sales-rule-in-magento-2%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    2














    We can try:



    /** @var MagentoSalesRuleModelRule $rule **/
    $rule->load($ruleId);
    $isActive = $rule->getIsActive();
    $fromDate = $rule->getFromDate();
    $toDate = $rule->getToDate();
    $label = $rule->getStoreLabels();


    Or with API:



    /** @var MagentoSalesRuleApiRuleRepositoryInterface $rule **/
    $rule->getById($ruleId);
    $isActive = $rule->getIsActive();
    $fromDate = $rule->getFromDate();
    $toDate = $rule->getToDate();
    $label = $rule->getStoreLabels();


    Remember to inject MagentoSalesRuleApiRuleRepositoryInterface or MagentoSalesRuleModelRule on your constructor.



    /** @var MagentoSalesRuleApiRuleRepositoryInterface $rule **/

    protected $rule;

    public function __construct(
    MagentoSalesRuleApiRuleRepositoryInterface $rule

    ) {

    $this->rule = $rule;
    }





    share|improve this answer






























      2














      We can try:



      /** @var MagentoSalesRuleModelRule $rule **/
      $rule->load($ruleId);
      $isActive = $rule->getIsActive();
      $fromDate = $rule->getFromDate();
      $toDate = $rule->getToDate();
      $label = $rule->getStoreLabels();


      Or with API:



      /** @var MagentoSalesRuleApiRuleRepositoryInterface $rule **/
      $rule->getById($ruleId);
      $isActive = $rule->getIsActive();
      $fromDate = $rule->getFromDate();
      $toDate = $rule->getToDate();
      $label = $rule->getStoreLabels();


      Remember to inject MagentoSalesRuleApiRuleRepositoryInterface or MagentoSalesRuleModelRule on your constructor.



      /** @var MagentoSalesRuleApiRuleRepositoryInterface $rule **/

      protected $rule;

      public function __construct(
      MagentoSalesRuleApiRuleRepositoryInterface $rule

      ) {

      $this->rule = $rule;
      }





      share|improve this answer




























        2












        2








        2







        We can try:



        /** @var MagentoSalesRuleModelRule $rule **/
        $rule->load($ruleId);
        $isActive = $rule->getIsActive();
        $fromDate = $rule->getFromDate();
        $toDate = $rule->getToDate();
        $label = $rule->getStoreLabels();


        Or with API:



        /** @var MagentoSalesRuleApiRuleRepositoryInterface $rule **/
        $rule->getById($ruleId);
        $isActive = $rule->getIsActive();
        $fromDate = $rule->getFromDate();
        $toDate = $rule->getToDate();
        $label = $rule->getStoreLabels();


        Remember to inject MagentoSalesRuleApiRuleRepositoryInterface or MagentoSalesRuleModelRule on your constructor.



        /** @var MagentoSalesRuleApiRuleRepositoryInterface $rule **/

        protected $rule;

        public function __construct(
        MagentoSalesRuleApiRuleRepositoryInterface $rule

        ) {

        $this->rule = $rule;
        }





        share|improve this answer















        We can try:



        /** @var MagentoSalesRuleModelRule $rule **/
        $rule->load($ruleId);
        $isActive = $rule->getIsActive();
        $fromDate = $rule->getFromDate();
        $toDate = $rule->getToDate();
        $label = $rule->getStoreLabels();


        Or with API:



        /** @var MagentoSalesRuleApiRuleRepositoryInterface $rule **/
        $rule->getById($ruleId);
        $isActive = $rule->getIsActive();
        $fromDate = $rule->getFromDate();
        $toDate = $rule->getToDate();
        $label = $rule->getStoreLabels();


        Remember to inject MagentoSalesRuleApiRuleRepositoryInterface or MagentoSalesRuleModelRule on your constructor.



        /** @var MagentoSalesRuleApiRuleRepositoryInterface $rule **/

        protected $rule;

        public function __construct(
        MagentoSalesRuleApiRuleRepositoryInterface $rule

        ) {

        $this->rule = $rule;
        }






        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Sep 20 '16 at 15:41

























        answered Sep 13 '16 at 18:03









        Khoa TruongDinhKhoa TruongDinh

        21k63984




        21k63984

























            0














            This seemed to work for me, but I'm not sure it's exactly the way it should be handled or not. Open to suggestions. Thanks.



            $objectManager = MagentoFrameworkAppObjectManager::getInstance();
            $rule = $objectManager->create('MagentoSalesRuleModelRule')->load($ruleId);
            $isActive = $rule->getIsActive();





            share|improve this answer
























            • I'm pretty sure that my answer works well. We need to inject the sale rule model in your constructor.

              – Khoa TruongDinh
              Sep 16 '16 at 0:22











            • How do I inject the constructor? Thanks.

              – Mike
              Sep 16 '16 at 12:53











            • See my update answer.

              – Khoa TruongDinh
              Sep 24 '16 at 2:00
















            0














            This seemed to work for me, but I'm not sure it's exactly the way it should be handled or not. Open to suggestions. Thanks.



            $objectManager = MagentoFrameworkAppObjectManager::getInstance();
            $rule = $objectManager->create('MagentoSalesRuleModelRule')->load($ruleId);
            $isActive = $rule->getIsActive();





            share|improve this answer
























            • I'm pretty sure that my answer works well. We need to inject the sale rule model in your constructor.

              – Khoa TruongDinh
              Sep 16 '16 at 0:22











            • How do I inject the constructor? Thanks.

              – Mike
              Sep 16 '16 at 12:53











            • See my update answer.

              – Khoa TruongDinh
              Sep 24 '16 at 2:00














            0












            0








            0







            This seemed to work for me, but I'm not sure it's exactly the way it should be handled or not. Open to suggestions. Thanks.



            $objectManager = MagentoFrameworkAppObjectManager::getInstance();
            $rule = $objectManager->create('MagentoSalesRuleModelRule')->load($ruleId);
            $isActive = $rule->getIsActive();





            share|improve this answer













            This seemed to work for me, but I'm not sure it's exactly the way it should be handled or not. Open to suggestions. Thanks.



            $objectManager = MagentoFrameworkAppObjectManager::getInstance();
            $rule = $objectManager->create('MagentoSalesRuleModelRule')->load($ruleId);
            $isActive = $rule->getIsActive();






            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered Sep 15 '16 at 19:00









            MikeMike

            263




            263













            • I'm pretty sure that my answer works well. We need to inject the sale rule model in your constructor.

              – Khoa TruongDinh
              Sep 16 '16 at 0:22











            • How do I inject the constructor? Thanks.

              – Mike
              Sep 16 '16 at 12:53











            • See my update answer.

              – Khoa TruongDinh
              Sep 24 '16 at 2:00



















            • I'm pretty sure that my answer works well. We need to inject the sale rule model in your constructor.

              – Khoa TruongDinh
              Sep 16 '16 at 0:22











            • How do I inject the constructor? Thanks.

              – Mike
              Sep 16 '16 at 12:53











            • See my update answer.

              – Khoa TruongDinh
              Sep 24 '16 at 2:00

















            I'm pretty sure that my answer works well. We need to inject the sale rule model in your constructor.

            – Khoa TruongDinh
            Sep 16 '16 at 0:22





            I'm pretty sure that my answer works well. We need to inject the sale rule model in your constructor.

            – Khoa TruongDinh
            Sep 16 '16 at 0:22













            How do I inject the constructor? Thanks.

            – Mike
            Sep 16 '16 at 12:53





            How do I inject the constructor? Thanks.

            – Mike
            Sep 16 '16 at 12:53













            See my update answer.

            – Khoa TruongDinh
            Sep 24 '16 at 2:00





            See my update answer.

            – Khoa TruongDinh
            Sep 24 '16 at 2:00


















            draft saved

            draft discarded




















































            Thanks for contributing an answer to Magento Stack Exchange!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f136130%2fhow-do-i-programmatically-load-a-specified-sales-rule-in-magento-2%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Polycentropodidae

            Magento 2 Error message: Invalid state change requested

            Paulmy