Using a second master layout


#1

I have one master layout that i have been using for my app.I have a generated my app using iron-cli package and my master layout is called master_layout.html

t i now have a problem. All my app menus are all in he master layout and i need to create a login page that will not require the menus. This can be solved,if i had a second master layout whereby i can strip the menus off my original master layout and use the layout for my login page.

My route looks like this

Router.route('/Limit/ay', {
  name: 'ay',
  controller: 'LimitController',
  action: 'ay',
  where: 'client'
});

and my controller code looks like this

  ay: function() {
      this.render('Ay');
    //this.render('Added', {});
  }

Is there a way i can register a second master layout and use it for my login page?.


#2

As long as you’ve registered the layout, you can specify it per route. Something like:

...
Router.configure({
  layoutTemplate: 'masterLayout'
});

Router.configure({
  layoutTemplate: 'loginLayout'
});
...

Router.route('/',  {
  layoutTemplate: 'masterLayout'
});

Router.route('/login', {
  layoutTemplate: 'loginLayout'
});
...

#3

When i register this two templates

Router.configure({
  layoutTemplate: 'MasterLayout',
  loadingTemplate: 'Loading',
  notFoundTemplate: 'NotFound'
});

Router.configure({
  layoutTemplate: 'GoodLayout'
});

meteor is using good layout as master layout and if master layout is second,meteor is using master layout as master layout.Have a look at the api http://iron-meteor.github.io/iron-router/#layouts


#4

Right, but are you specifying the layout you want to use on your route?

Router.route('/login', {
  layoutTemplate: 'loginLayout'
});

#5

Just to add - you don’t really need to Router.configure() a layout; that’s only if you want a default. Specifying a layoutTemplate on your route will always work, without having it previously defined. So this might be better for you:

...
Router.configure({
  layoutTemplate: 'defaultLayout'
});
...
Router.route('/',  {
  ...
});

Router.route('/login', {
  layoutTemplate: 'loginLayout'
});
...

P.S. --> You might also want to consider moving away from using Iron Router. See the Guide’s current router recommendations.


#6

Thanks,that worked. Does Fow Router generate the app structure for you?.