2015-04-22 6 views
1

У меня есть глобальный маршрут, который использует layout.html, который указывает header.html. Я хотел бы знать, как:Создайте страницу входа/регистрации перед отправкой на главную страницу в Meteor?

1) иметь главную целевую страницу для входа/регистрации с правильным форматированием без заголовка. (Я использую UserAccounts из атмосферы, но форматирование отличается, а не уверен, почему). Также нельзя удалить заголовок в layout.js.

2) После входа/входа, он должен перейти на главную страницу.

Может ли кто-нибудь посоветовать как?

Router.configure({ 
     layoutTemplate: 'layout', //This is where header is specified globally 
     waitOn: function() { 
     return [Meteor.subscribe('notifications')] 
     } 
    }); 

Router.route('/', { 
    name: 'auth' 
}); //added this new line 

Router.route('/posts', { 
    name: 'home', 
    controller: NewPostsController 
}); 

var requireLogin = function() { 
    if (! Meteor.user()) { 
    if (Meteor.loggingIn()) { 
     this.render(this.loadingTemplate); 
    } else { 
     this.render('accessDenied'); 
    } 
    } else { 
    this.next(); 
    } 
} 

Router.onBeforeAction('dataNotFound', {only: 'postPage'}); 
Router.onBeforeAction(requireLogin, {only: 'postSubmit'}); 


Это layout.html определены глобально.

<template name="layout"> 
    <div class="container"> 
    {{> header}} 
    {{> errors}} 

    <div id="main"> 
     {{> yield}} 
    </div> 
    </div> 
</template> 

Update после @ предложение Чейза. - Он работает на маршрутизации, и заголовок отсутствует. - Форматирование отличается от веб-сайта.

То, что я показано ниже в то время как его должен выглядеть http://useraccounts.meteor.com/ enter image description here

ответ

2

С помощью этой настройки вам не нужно будет устанавливать макет с заголовком для каждого маршрута.

В пакете «Учетные записи пользователей» есть плагин «Железный маршрутизатор», чтобы гарантировать, что пользователь подписал то, что я использую (more info). Я также настраиваю маршруты, предоставляемые пакетом Учетные записи пользователей (more info), поэтому я могу напрямую перейти на страницу регистрации учетных записей пользователей.

Javascript

Router.configure({ 
    layoutTemplate: 'layout' //main layout with header 
}); 

//Iron router plugin to ensure user is signed in 
AccountsTemplates.configureRoute('ensureSignedIn', { 
    template: 'atTemplate', //template shown if user is not signed in 
    layoutTemplate: 'atLayout' //template for login, registration, etc 
}); 

//Don't require user to be logged in for these routes 
Router.plugin('ensureSignedIn', { 
    except: ['login', 'register'] 
}); 

//Configure route for login 
AccountsTemplates.configureRoute('signIn', { 
    name: 'login', 
    path: '/login', 
    template: 'atTemplate', 
    layoutTemplate: 'atLayout', 
    redirect: '/' 
}); 

//Configure route for registration 
AccountsTemplates.configureRoute('signUp', { 
    name: 'register', 
    path: '/register', 
    template: 'atTemplate', 
    layoutTemplate: 'atLayout', 
    redirect: '/' 
}); 

//Home page to show once logged in 
Router.route('/', { 
    name: 'home', 
    action: function(){ 
     this.render('home'); 
    } 
}); 

HTML

<template name="layout"> 
    <div class="container"> 
     {{> header}} 
     {{> errors}} 

     <div id="main"> 
      {{> yield}} 
     </div> 
    </div> 
</template> 

<template name="atLayout"> 
    <div class="at-container"> 
     {{> yield}} 
    </div> 
</template> 

<template name="atTemplate"> 
    {{> atForm}} 
</template> 
+0

Спасибо @Chase. Кажется, я не могу добиться того же формата, что и на сайте. Ты знаешь почему? Я прикрепил рис. – Thinkerer

+0

Какой пакет стиля UserAccounts вы используете? – Chase

+0

Я использую semantic-ui. Я пробовал безручно, m и p ... все заканчивается тем же. Я попытался удалить все мои CSS ... тоже не работает. – Thinkerer

2

Вы можете создать 2 diferents макеты шаблонов с различной установкой.

Javascript

Router.configure({ 
     layoutTemplate: 'adminLayout', //layout without header 
    }); 

Router.route('/', { //main page, different layout 
    layout:layout, 
    name: 'auth' 
    }); 

HTML

<template name="adminLayout"> 
    <div class="container"> 
    {{> errors}} 
    <div id="main"> 
     {{> yield}} 
    </div> 
    </div> 
</template> 

При этом вы будете иметь diferents макеты для diferentes маршрутов.

+0

Привет Ethaan, просто чтобы уточнить. Не работает ли указанный вами маршрут авторизации в качестве шаблона макета? – Thinkerer

+0

Это был просто пример, позвольте мне исправить это. – Ethaan

+0

и у вас есть 'Router.configure ({ layoutTemplate: 'autht', // макет без заголовка });'? – Ethaan