MVC: some questions on views

Do you have a question? Post it now! No Registration Necessary.  Now with pictures!

Threaded View

I 'm writting an application using an MVC approach of mine (not with a
framework). Notice that I 'm not writting a framework but an application
with such an approach.

I 'm having trouble understanding how views work. I have understood
(from web reading) that MVC is a flexible approach and not something
strict so I want some advice.

I have index.php as a front controller. Depending on the module being
asked (index.php?module=professors for example) I load an appropriate
class controller.

Then in index.php I have a $controller->Process() function and a
$controller->view->Display() where view is a view defined in the controller.

But how do you define a view? Lets assume I am a teacher with a login in
the system and visit the site. A login in form should be presented upon
first visit to login. Is this a view by itself? Then if you login you
are shown a menu and a default page. This page holds a list of notes you
have uploaded, and you can upload/delete/edit the data. Is this a page a
single view? And what about the menu of the user. Is it a separated view
included from the main view?

I find it a little bit complicated to undestand. And to give you an
example this is my view now:

class gView {
    var $header;
    public $title;
    public $jsscripts;
    public $metakeywords;
    public $metadescription;
    public $todisplay;
    function header(){
    function footer() {
    function Display() {
        print $this->todisplay;

The $controller->Process() function loads the appropriate function and
sets the $view->todisplay string. Just to clarify that each controller
holds also the buisness model is the class. I don't use a separate model
class for each controller.

Any help/hint would be valuable.

Thanks a lot

Re: MVC: some questions on views

Harris Kosmidhs wrote:
Quoted text here. Click to load it

The idea behind MVC is to separate data from it's presentation.
Controller acts as a director, listens to user and decides what to do.

View should be only responsible for presentation data it was given.
As so, you should not decide here, what is the state of navigation, or
if user needs to login first. Those are both controller responsibilities.

Your controller should process all data in context of your application
state, and pass only the result to view, for sole purpose of
presentation this data (rendering).

It's not said, that you must render single view per request. Your output
might be composed of many views. You can render your menu, other bocks
and main content, compose those (within controller) and then send it to

In some of the frameworks, you also has a Layout module, this is a kind
of view decorator/composer. It takes separate views, and combines them
into complete web page. You can think of it as a html template with
options to set blocks. Ie.:

As you can see, controller has a lot of work with handling request, this
is why there is a separate 'MODEL' component, that should hold data
handling logic. Just to keep things simple and readable. You are free to
do what is best for you, but this pattern has been proven right many times.

On the side note, it's good to use a framework. Lets leverage the fact
that there are so many good programmers that are willing to do the job
for us. Hell, we might even learn something from them.

Hope this helps you a bit

best regards
Piotr N

Re: MVC: some questions on views

Quoted text here. Click to load it

Why would you do that ? The beauty of a MVC structure is that you
seperate the model and view

This is how I would do it

class ProfessorModel extends Model{
      // etc

class CourseModel extends Models{

class ProfessorController extends Controller{

public function index($id){

    // get Professor Info
    $oProfessor = new ProfessorModel($id);

    // get all Courses given by this professor
    $oCourses = new CoursModel($Professor->getId());

    // etc

Then pass the data ($oProfessor and $oCourses) to a View and process

Re: MVC: some questions on views

floortje wrote:
Quoted text here. Click to load it

yes I understand this. But what does Model consists of? I mean what are
the basic functionalities that can be extended?
Unless by ProfessorModel you mean a class that consists the name, id,
and general fields of professor master data...

Re: MVC: some questions on views

Harris Kosmidhs wrote:
Quoted text here. Click to load it

Most people extend a database abstraction layer as their model base.
So they can make save, update an so on on the data.

You can also add logic that is common across your models

So you can think of it like this

class Model {

    //so your model can load data he needs
    protected function getById();
    public function getByName();

    //so model user can change the data
    public function save();
    public function delete();


class PersonModel extends Model {
    public function getName()
    public function getLastName()
    public function getDayPlan()

class ClassModel() {
    public function addStudent(StudentModel $student);
    public function removeStudent(StudentModel $student);
    public function getProfessor();
    public function setProfessor(ProfessorModel $processor);

class ProfessorModel extends PersonModel {
    public function getClasses()
    public function addClass(ClassModel $class,$timeStarts,$duration);
    public function removeClass(ClassModel $class);

class StudentModel extends PersonModel {
    public function addNote($note, ClassModel $class);
    public function kickOut();
    public function graduate();

ect ect :)

If your models are well designed, and have good, consistent api, you
will have no trouble dealing with them inside controllers. And your
controllers will be easy to read and maintain

best regards
Piotr N

Site Timeline