Reputation: 31
I want to redirect if a page after validate its query is wrong. How could I achieve this ? Here is my code
validate({ params, query, router }){
if(isAfter(new Date(query.date_check_in), addDays(new Date(), 1)) !== true) {
query.date_check_in = format(addDays(new Date(), 1), 'YYYY-MM-DD')
query.date_check_out = format(addDays(new Date(), 2), 'YYYY-MM-DD')
return true
} else if(query.date_check_in === 'Invalid Date' || query.date_check_out === 'Invalid Date') {
router.push('search')
return true
}
}
Upvotes: 2
Views: 3491
Reputation: 23
It's recommended to redirect from middleware. You just need to create a middleware, e.g. src/middleware/redirect.js
.
export default function({ app, redirect }) {
// Option 1: your store isn't reset
app.router.push(`/`);
// Option 2: an actual redirect (check status code), which will also reset Vuex store
redirect('301', '/', {});
}
Then, from your page...
export default {
middleware: [
'redirect',
],
},
You can push to router as follows (remember validate()
should return either boolean or promise):
validate({ app }) {
app.router.push('/');
return true;
},
Upvotes: 1
Reputation: 61
you can use 'redirect'
for example:
validate({ store, redirect }) {
// some codes...
redirect('/')
}
Upvotes: 6