By default, ColdMVC will look for a layout with the same name as your controller. For example, if you were make a request to http://myapp.com/index.cfm/product/list, ColdMVC would look for a layout located at /app/layouts/product.cfm. If it cannot find a product.cfm, it look look for the default layout, located at /app/layouts/index.cfm. This is useful if your application has several controllers but only 1 main layout.
If you want to pass data to your layout, create a LayoutController.cfc inside your application’s /app/controllers/ folder and have it extend coldmvc.LayoutController. Then create a function inside the LayoutController with the same name as the request’s controller. In the previous example, you would create function named
product. Inside the function, any data put into the params scope will be automatically copied into the variables scope of the layout. If a
productfunction isn’t defined inside the LayoutController, ColdMVC will look for an
indexmethod and call that instead.
By default, each controller’s corresponding layout is the same name as the controller. You can change this by adding @layout metadata to your controller’s metadata. If you would like to change the layout for an individual action within a controller, you can do this by adding @layout metadata to the function.
If your request uses a layout, your layout is in charge of rendering the view’s content. This can be done simply by calling
#render()#inside your layout where you want your view’s content to be displayed.