When it is good to use viewModel ? What is difference between viewModel and Block?












1















I am bit confuse about using viewModel in Magento. I am not getting exact difference between viewModel and Block.
In which case using viewModel is best case?



Any help will be appreciated.









share



























    1















    I am bit confuse about using viewModel in Magento. I am not getting exact difference between viewModel and Block.
    In which case using viewModel is best case?



    Any help will be appreciated.









    share

























      1












      1








      1


      2






      I am bit confuse about using viewModel in Magento. I am not getting exact difference between viewModel and Block.
      In which case using viewModel is best case?



      Any help will be appreciated.









      share














      I am bit confuse about using viewModel in Magento. I am not getting exact difference between viewModel and Block.
      In which case using viewModel is best case?



      Any help will be appreciated.







      magento2.2 blocks viewmodel





      share












      share










      share



      share










      asked 7 mins ago









      Dhaval SolankiDhaval Solanki

      1,3341932




      1,3341932






















          1 Answer
          1






          active

          oldest

          votes


















          0














          Magento veteran Jessie has a well famous blog on viewModel which you can find it here. It answers your question at the end. It says:




          When to use ViewModels?



          When would you want to use ViewModels? Well, when Magento 2.2 comes out and your code doesn't need to be
          backwards compatible with Magento 2.1 any more, my answer will be:
          Always! However, reality is that we most likely need to maintain
          backwards compatibility for some time. And the procedure above is a
          bit lengthy to follow if Block classes are still simple enough without
          any custom constructor.



          I would say that you create some kind of ViewModel functionality as
          soon as you start overriding the Block constructor to inject your own
          dependency into it. A Block class that extends from a parent and
          simply reuses the parents dependencies is not that bad, as long as you
          don't have a huge dislike of $context. However, as soon as the Block
          becomes more complex, it's always better offload features to other
          classes. And ViewModels are meant to be the good addition to that.






          share























            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%2f260331%2fwhen-it-is-good-to-use-viewmodel-what-is-difference-between-viewmodel-and-bloc%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            0














            Magento veteran Jessie has a well famous blog on viewModel which you can find it here. It answers your question at the end. It says:




            When to use ViewModels?



            When would you want to use ViewModels? Well, when Magento 2.2 comes out and your code doesn't need to be
            backwards compatible with Magento 2.1 any more, my answer will be:
            Always! However, reality is that we most likely need to maintain
            backwards compatibility for some time. And the procedure above is a
            bit lengthy to follow if Block classes are still simple enough without
            any custom constructor.



            I would say that you create some kind of ViewModel functionality as
            soon as you start overriding the Block constructor to inject your own
            dependency into it. A Block class that extends from a parent and
            simply reuses the parents dependencies is not that bad, as long as you
            don't have a huge dislike of $context. However, as soon as the Block
            becomes more complex, it's always better offload features to other
            classes. And ViewModels are meant to be the good addition to that.






            share




























              0














              Magento veteran Jessie has a well famous blog on viewModel which you can find it here. It answers your question at the end. It says:




              When to use ViewModels?



              When would you want to use ViewModels? Well, when Magento 2.2 comes out and your code doesn't need to be
              backwards compatible with Magento 2.1 any more, my answer will be:
              Always! However, reality is that we most likely need to maintain
              backwards compatibility for some time. And the procedure above is a
              bit lengthy to follow if Block classes are still simple enough without
              any custom constructor.



              I would say that you create some kind of ViewModel functionality as
              soon as you start overriding the Block constructor to inject your own
              dependency into it. A Block class that extends from a parent and
              simply reuses the parents dependencies is not that bad, as long as you
              don't have a huge dislike of $context. However, as soon as the Block
              becomes more complex, it's always better offload features to other
              classes. And ViewModels are meant to be the good addition to that.






              share


























                0












                0








                0







                Magento veteran Jessie has a well famous blog on viewModel which you can find it here. It answers your question at the end. It says:




                When to use ViewModels?



                When would you want to use ViewModels? Well, when Magento 2.2 comes out and your code doesn't need to be
                backwards compatible with Magento 2.1 any more, my answer will be:
                Always! However, reality is that we most likely need to maintain
                backwards compatibility for some time. And the procedure above is a
                bit lengthy to follow if Block classes are still simple enough without
                any custom constructor.



                I would say that you create some kind of ViewModel functionality as
                soon as you start overriding the Block constructor to inject your own
                dependency into it. A Block class that extends from a parent and
                simply reuses the parents dependencies is not that bad, as long as you
                don't have a huge dislike of $context. However, as soon as the Block
                becomes more complex, it's always better offload features to other
                classes. And ViewModels are meant to be the good addition to that.






                share













                Magento veteran Jessie has a well famous blog on viewModel which you can find it here. It answers your question at the end. It says:




                When to use ViewModels?



                When would you want to use ViewModels? Well, when Magento 2.2 comes out and your code doesn't need to be
                backwards compatible with Magento 2.1 any more, my answer will be:
                Always! However, reality is that we most likely need to maintain
                backwards compatibility for some time. And the procedure above is a
                bit lengthy to follow if Block classes are still simple enough without
                any custom constructor.



                I would say that you create some kind of ViewModel functionality as
                soon as you start overriding the Block constructor to inject your own
                dependency into it. A Block class that extends from a parent and
                simply reuses the parents dependencies is not that bad, as long as you
                don't have a huge dislike of $context. However, as soon as the Block
                becomes more complex, it's always better offload features to other
                classes. And ViewModels are meant to be the good addition to that.







                share











                share


                share










                answered 1 min ago









                Rajeev K TomyRajeev K Tomy

                14.4k54585




                14.4k54585






























                    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%2f260331%2fwhen-it-is-good-to-use-viewmodel-what-is-difference-between-viewmodel-and-bloc%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