Let's say my main controller 'hotels' has a pattern for the url, such as:
/hotels/colorado/aspen/hotel-name/
How should I program my controller ( keep in mind I'm still learning MVC ) to handle this variable?
I know that I have to probably check if anything after /hotels/ is set, otherwise show the default hotels page.
If a state is set, show the state page, and so forth with the city and hotel name.
class hotelController {
function state() {
}
function city() {
}
function hotel() {
}
}
Should I have 3 separate methods for each of those? Any advice is appreciated.
Best Answer
Usually this is solved with Object Dispatch. You can also create nested Controllers to handle this. An advantage is, that you can follow a major OOP principle, namely encapsulation, as you group all functionality that only concerns Hotels generally in the Hotel controller (for example adding a new one)
Another advantage is, you dont have to check what is set after /hotels/ for example. It will only be dispatched to a new controller if there is something left to dispatch i.e. if the current controller wasnt able to handle the entire request.
This isnt really specific to a certain framework, but it is fully implemented in Pylons and Turbogears 2.0. (For more details you may refer to http://turbogears.org/2.0/docs/main/TGControllers.html#the-lookup-method )