I'm trying to show a different layout for a login page. My controller (security.cfc) has a function called login where I use setLayout(). When the second argument is set to true, only my view gets rendered (see second trace). If it is false, both layouts get rendered (see first trace). The third trace is correct: no second argument for setLayout() and request.layout = false inside layout. Shouldn't that be possible with the second argument set to true?
Files:
/controllers/
/controllers/security.cfc
public void function login( struct rc ) {
variables.fw.setLayout( 'html5' , true );
}
/layouts/
/layouts/default.cfm
/layouts/html5.cfm
/views/
/views/main/default.cfm
/views/security/login.cfm
setLayout() second argument false: HTML from /layouts/html5.cfm AND /layouts/default.cfm are rendered.
0ms | 1ms | | setupApplication() called |
1ms | | | setupRequest() called |
1ms | 1ms | main.setMetaData | queuing controller |
2ms | | security.login | queuing controller |
2ms | | Application.cfc | no before controller to call |
2ms | | main.before | no before controller to call |
2ms | | main.setMetaData | calling item controller |
2ms | | security.before | no before controller to call |
2ms | 1ms | security.login | calling item controller |
3ms | | security.after | no after controller to call |
3ms | | main.after | no after controller to call |
3ms | | Application.cfc | no after controller to call |
3ms | | security.login | building view queue |
3ms | | security.login | found view /views/security/login.cfm |
3ms | | | setupView() called |
3ms | 1ms | | rendering /views/security/login.cfm |
4ms | 1ms | html5.default | building layout queue |
5ms | | html5.default | found section-specific layout /layouts/html5.cfm |
5ms | | html5.default | found default layout /layouts/default.cfm |
5ms | | | rendering /layouts/html5.cfm |
5ms | | | rendering /layouts/default.cfm |
5ms | | | setupResponse() called |
setLayout() second argument true: only the view /views/security/login.cfm is rendered!
0ms | | | setupApplication() called |
0ms | | | setupRequest() called |
0ms | 166ms | main.setMetaData | queuing controller |
166ms | | security.login | queuing controller |
166ms | | Application.cfc | no before controller to call |
166ms | | main.before | no before controller to call |
166ms | | main.setMetaData | calling item controller |
166ms | | security.before | no before controller to call |
166ms | 20ms | security.login | calling item controller |
186ms | | security.after | no after controller to call |
186ms | | main.after | no after controller to call |
186ms | | Application.cfc | no after controller to call |
186ms | 1ms | security.login | building view queue |
187ms | | security.login | found view /views/security/login.cfm |
187ms | | | setupView() called |
187ms | 5ms | | rendering /views/security/login.cfm |
192ms | 1ms | html5.default | building layout queue |
193ms | | | setupResponse() called |
This generates the correct output: setLayout( 'html5' ) in controller AND request.layout = false in layout html5.cfm
0ms | | | setupApplication() called |
0ms | | | setupRequest() called |
0ms | 1ms | main.setMetaData | queuing controller |
1ms | | security.login | queuing controller |
1ms | | Application.cfc | no before controller to call |
1ms | | main.before | no before controller to call |
1ms | | main.setMetaData | calling item controller |
1ms | | security.before | no before controller to call |
1ms | | security.login | calling item controller |
1ms | | security.after | no after controller to call |
1ms | | main.after | no after controller to call |
1ms | | Application.cfc | no after controller to call |
1ms | | security.login | building view queue |
1ms | | security.login | found view /views/security/login.cfm |
1ms | | | setupView() called |
1ms | | | rendering /views/security/login.cfm |
1ms | | html5.default | building layout queue |
1ms | | html5.default | found section-specific layout /layouts/html5.cfm |
1ms | | html5.default | found default layout /layouts/default.cfm |
1ms | 138ms | | rendering /layouts/html5.cfm |
139ms | | | aborting layout rendering |
139ms | | | setupResponse() called |
FW/1 3.0 setLayout() can suppress additional layouts
Local config: FW/1 3.0 B1, Railo-Express (4.2.1.008) on OS X 10.10.1
Remote config: Railo 4.1.x on Windows (?)