Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

We've moved the forum!

Please use forum.silverstripe.org for any new questions (announcement).
The forum archive will stick around, but will be read only.

You can also use our Slack channel or StackOverflow to ask for help.
Check out our community overview for more options to contribute.

Data Model Questions /

Moderators: martimiz, Sean, Ed, biapar, Willr, Ingo, swaiba

Should Model and Controller be in seperate files?


Go to End


4 Posts   2753 Views

Avatar
keeny

Community Member, 48 Posts

20 February 2009 at 3:57pm

Many times i've scratched my head over a problem because i've put a function in the controller rather than the model. This might sound silly - but I find having them both in the same file is very confusing.

Coming from Rails, the seperation is explicit with model files and controller files. Does anyone else think it would be much clearer to have 'mysite/code' split into 'mysite/code/controllers' 'mysite/code/models'?

Please throw in your two cents....

Avatar
UncleCheese

Forum Moderator, 4102 Posts

20 February 2009 at 5:38pm

Yeah, this confused me for a while, too. See the "Model or Controller?" post in the archive.

Functions in the controller are only available to the template being controlled by the controller. Functions in the model are available everywhere. If you've syndicated your NewsArticle objects to the home page, for instance, only the functions in the NewsArticle model will be available. But when viewing the actual NewsArticle.ss page, you'll have access to its controller functions.

Just a question of scope, really. It's a little more tidy to keep template-specific functions in your controller.

Avatar
keeny

Community Member, 48 Posts

20 February 2009 at 5:56pm

Hi Mr Cheese,

I do understand the scope of a MVC system. I just don't think MVC is shouted about enough for new developers coming to silverstripe. I think having a model and controller side by side in the same file confuses new silverstripe developers.

I think to encourage the separation of business logic from template-specific actions, a model should be in it's own file. As should a controller be in it's own file.

Avatar
dospuntocero

Community Member, 54 Posts

23 February 2009 at 2:32am

Keeny, actually you could separate the files without problems, but what i noticed is one of the most common problems to new people using silverstripe is that forget to put its AnyPageController extends Page_Controller at the bottom of its Classes, imagine now they will need to create an empty file only for write this...

i think is better to simplify things, and when you start to do complex stuff, simply re order as you want