Envie vários caminhos para uma rota sem função de redirecionamento
-
21-12-2019 - |
Pergunta
Estou atualizando meu site para um aplicativo Meteor com roteador de ferro e preciso alterar meus URLs.O esquema antigo tinha nomes de páginas em letras maiúsculas como este:
mysite.com/Contact
mas mudei tudo para letras minúsculas:
mysite.com/contact
Essa rota de contato não é complicada, então está configurada assim:
this.route('contact');
mas eu quero o /Contact
url a ser redirecionado.Eu sei que poderia fazer isso:
this.route('Contact', {
onBeforeAction: function() {
Router.go('contact');
}
});
mas é muito mais confuso.Eu preferiria fazer algo assim:
this.route('contact', {
path: ['/contact', '/Contact']
});
onde a rota é simplesmente mapeada para vários caminhos.
Existe um recurso como este?Ou é meu onBeforeAction
o melhor que vou conseguir?
Solução
https://github.com/EventedMind/iron-router/blob/devel/DOCS.md#dynamic-path-segments
Você pode usar uma Expressão Regular para seu segmento de caminho (veja o último exemplo no link Segmentos de Caminho Dinâmico).
Seu caminho seria:
this.route('contact', {
path: /contact/i
});
Onde o 'i' após a barra é o modificador de expressão regular que não diferencia maiúsculas de minúsculas, permitindo que você aceite qualquer variação de 'contato' (seja cOntact, Contact ou conTACT).
Ver http://www.w3schools.com/jsref/jsref_regexp_i.asp para obter detalhes sobre o modificador RegEx.