Welcome Guest, Not a member yet? Register   Sign In
Poll: CI4: Module support?
You do not have permission to vote in this poll.
yes
88.46%
115 88.46%
no
4.62%
6 4.62%
maybe
6.92%
9 6.92%
Total 130 vote(s) 100%
* You voted for this item. [Show Results]

Module support?
#45

(09-24-2015, 02:11 AM)Martin7483 Wrote: Maybe we should all take a step back and remind our selfs what MVC is.

An incoming request is sent to a controller and a method inside this controller is executed.
This called method will use models, libraries, helpers and views to complete the request and return HTML to the output.

Why should HMVC do it any differently? People say a HMVC controller should not return HTML. But if you are going to complete the view outside the called HMVC module, it's not really an independent piece of coding now is it? Saving the returned HTML in a variable in the main controller is no different than saving returned HTML that was completed in the same main controller, or is it?

I think of HMVC as a sort of coding inception. Application within application within application, that all operate independent of each other. Returning the complete result of a request, and not a half finished result of a request to be completed elsewhere.

An HMVC controller responds to a request, just as an MVC controller does. The big difference is the source of the request. In CodeIgniter, the controller gets its request from the Router, as an interpretation of the URL. When you add HMVC on top of that, the controller could get its request from another controller.

One of the things that is difficult to do when working with an HMVC implementation is to keep some separation between controllers or actions which are intended to be used by other controllers and those which are intended to be use to respond to requests from the Router. When people can manage that separation, there is not likely to be any significant harm in returning HTML from a module, as long as that partial view is self-contained (for example, you don't open or close an element which is not contained in the partial view), and the HTML is returned, not output directly by the module.

On the other hand, one of the dangers with generating the HTML in the module is that the module either generates generic HTML which might be more difficult to manipulate with the site's CSS/JavaScript framework, or HTML which is specific to that framework and has to be updated when that framework changes (which means the module knows too much about the site as a whole and isn't truly independent).

In a best case scenario, you might have one controller which responds to the request from the Router, requests partial views and/or data from a number of other controllers, then determines how those partial views will be arranged in the view which it sends to CI's Output.

(09-24-2015, 02:11 AM)Martin7483 Wrote: The example of a shopping catalog as a module and the cart as a module is something I don't get. A shopping cart is part of a shopping catalog. So should that not be a library that is part of the catalog module?

Thats just what I think of it. Maybe I am completely wrong about this.

Before the internet took over just about every form of shopping other than physical storefronts, a shopping catalog was a completely separate entity from a shopping cart. The only place they often co-existed was in catalog stores, which mostly disappeared when I was fairly young (not to mention the catalogs themselves more recently). If you weren't near a catalog store or you didn't mind waiting (and paying) for delivery by mail, you could fill out an order form and mail it or pick up the phone and place an order, either of which never required touching a shopping cart.

What we call a shopping cart on a website is essentially an order form, but they both serve the same purpose. You put stuff in it, and it doesn't really care what that stuff happens to be. It just has to hold that stuff until we either take it out or start the process of actually buying it. In a well-designed system, it very well could be completely separate of not only the catalog, but also anything related to processing the order.

The catalog tells us what we can buy, maybe even gives us some nice pictures to look at and some information about any available options. We make a choice to add something from the catalog to our cart, but the only thing the cart needs to do is remember what choice(s) you made (and really, the data could be dumped into the cart in a format the cart doesn't understand at all, it just has to hold on to it).

One of the reasons this example can work fairly well as an example of HMVC is that we not only want to separate this code logically, we may want to modify the user interface of each of them independently, with neither of them needing to be aware of the changes in the other piece. Ultimately, the controller responding to the request from the Router might put together a page which uses a menu from one controller, a page from a catalog controller, and the user's cart from yet another controller. It might even be dealing with more pieces from other modules which are important to the site displaying the page, but not necessarily the focus of the user's current activity, like maintaining logs and analytics.
Reply


Messages In This Thread
Module support? - by jlp - 04-06-2015, 05:55 PM
RE: Module support? - by gadelat - 04-06-2015, 11:20 PM
RE: Module support? - by llebkered - 04-08-2015, 08:34 AM
RE: Module support? - by Hobbes - 04-09-2015, 12:58 PM
RE: Module support? - by yurikhita - 04-09-2015, 02:21 PM
RE: Module support? - by ardhie1032 - 04-09-2015, 02:34 PM
RE: Module support? - by no1youknowz - 04-10-2015, 06:51 AM
RE: Module support? - by sintakonte - 04-12-2015, 01:52 AM
RE: Module support? - by josetrindade - 04-10-2015, 08:11 AM
RE: Module support? - by dmyers - 04-10-2015, 11:27 AM
RE: Module support? - by no1youknowz - 04-10-2015, 04:23 PM
RE: Module support? - by dmyers - 04-10-2015, 07:09 PM
RE: Module support? - by wolfgang1983 - 04-12-2015, 02:17 AM
RE: Module support? - by michalsn - 04-12-2015, 03:28 AM
RE: Module support? - by Davcon - 04-12-2015, 05:38 AM
RE: Module support? - by RWCH - 06-05-2015, 07:42 AM
RE: Module support? - by nasser.man - 06-05-2015, 08:46 AM
RE: Module support? - by nasser.man - 05-04-2015, 02:23 AM
RE: Module support? - by apsweb - 05-14-2015, 08:33 AM
RE: Module support? - by InsiteFX - 06-06-2015, 11:13 PM
RE: Module support? - by ivantcholakov - 06-07-2015, 07:49 AM
RE: Module support? - by nasser.man - 06-13-2015, 01:31 AM
RE: Module support? - by PaulD - 06-22-2015, 07:22 PM
RE: Module support? - by no1youknowz - 06-23-2015, 08:34 PM
RE: Module support? - by ivantcholakov - 06-22-2015, 11:30 PM
RE: Module support? - by sintakonte - 06-24-2015, 07:51 AM
RE: Module support? - by ivantcholakov - 06-24-2015, 08:21 AM
RE: Module support? - by sintakonte - 06-24-2015, 08:38 AM
RE: Module support? - by kilishan - 06-24-2015, 07:52 PM
RE: Module support? - by sintakonte - 06-25-2015, 01:11 AM
RE: Module support? - by ivantcholakov - 06-24-2015, 09:31 PM
RE: Module support? - by kilishan - 06-24-2015, 09:56 PM
RE: Module support? - by ivantcholakov - 06-24-2015, 10:18 PM
RE: Module support? - by nc03061981 - 06-25-2015, 09:21 AM
RE: Module support? - by dmyers - 06-26-2015, 04:52 AM
RE: Module support? - by ivantcholakov - 06-26-2015, 10:32 AM
RE: Module support? - by dmyers - 06-26-2015, 02:52 PM
RE: Module support? - by RWCH - 06-30-2015, 03:11 PM
RE: Module support? - by ivantcholakov - 07-02-2015, 04:42 AM
RE: Module support? - by solidcodes - 09-23-2015, 02:16 AM
RE: Module support? - by InsiteFX - 09-23-2015, 04:13 AM
RE: Module support? - by Narf - 09-23-2015, 05:05 AM
RE: Module support? - by Martin7483 - 09-24-2015, 02:11 AM
RE: Module support? - by mwhitney - 09-24-2015, 07:16 AM
RE: Module support? - by solidcodes - 09-24-2015, 03:53 AM
RE: Module support? - by mwhitney - 09-24-2015, 11:12 AM
RE: Module support? - by Narf - 09-25-2015, 01:50 AM
RE: Module support? - by Martin7483 - 09-25-2015, 02:43 AM
RE: Module support? - by mwhitney - 09-25-2015, 08:55 AM
RE: Module support? - by Martin7483 - 09-25-2015, 09:17 AM
RE: Module support? - by mwhitney - 09-25-2015, 11:18 AM
RE: Module support? - by Martin7483 - 09-26-2015, 04:59 AM
RE: Module support? - by Ivo Miranda - 06-26-2016, 05:14 PM
RE: Module support? - by kilishan - 06-26-2016, 07:52 PM
RE: Module support? - by orionstar - 06-26-2016, 09:54 PM
RE: Module support? - by Ivo Miranda - 06-27-2016, 04:58 AM
RE: Module support? - by ivantcholakov - 09-20-2016, 08:49 AM
RE: Module support? - by Narf - 09-20-2016, 10:52 AM



Theme © iAndrew 2016 - Forum software by © MyBB