The answer to the original question:
- The controller returns data from the Model and transfers it to the View
MVC is actually very neat and clean. Remember that it addresses:
Code reuse (Models do not rely on controllers or views. Views are independent of controllers or models. Controllers are application specific.)
Separation of logic (for example, changing the authentication database from MySQL to LDAP requires changing 0 to the view. Changing the layout of the view requires changing the model to 0. Changing the structure of the database table requires 0 changes in the controller or view).
Now, if you want your forms to be automatically generated from the table structure, now the views are attached to the table (closely related). Changing the table requires a change in view (albeit potentially automatic). This may take less code, but the presentation no longer depends on the expectation point of code reuse.
Similarly, your views (in MVC) should be nothing more than templates. There should be no logic - just variables. All "logic", the so-called business rules, is in the controller. Models know how to get data and maintain normalization. Views know how to display data. The controller knows when to use data and what views apply data.
MVC is a rigorous three-tier architecture. For some applications, there is a two-tier architecture. For fast mashups and "getting shit", one related architecture may be appropriate (but you don't get style points).
Hope this helps.
source share