маршрутизация с локалью в vuejs, если у меня есть некоторый динамический c маршрут, например: mywebsite / xVcbaMca, - PullRequest
0 голосов
/ 07 мая 2020

Как я могу перенаправить пользователя на имя: check-data, когда кто-то попадает на мой сайт с этого URL: mywebsite / xVcbaMca, я хочу работать с beforeEach и проверять, выполняется ли условие, если условие истинно, то я хочу использовать следующий метод для перенаправления пользователя к некоторой локали на маршруте проверки данных. Я хочу перенаправить пользователя из условия проверки внутри beforeEach для следующего, но условие не работает .. Не могли бы вы помочь мне в этом. Я не хочу использовать здесь вложенные маршруты. Это мои маршруты. js файл

// Route components
import VueRouter from 'vue-router'
import {i18n} from "./app";

const routes = [
    {
        path: "/:lang",
        component: require('./components/solution-selector/Main.vue').default,
    }
    ,
    {
        name: 'starting-point',
        path: '/:lang/starting-point',
        component: require('./components/solution-selector/StartingPoint').default,
        meta: {transition: 'overlay-down-full', title: 'Solution Selector'},
    },
    {
        name: 'products',
        path: '/:lang/products',
        component: require('./components/solution-selector/Product.vue').default,
        meta: {title: 'Solution Selector'},
    },
    {
        name: 'review',
        path: '/:lang/review',
        component: require('./components/solution-selector/Review.vue').default,
        meta: {title: 'Solution Selector'},
    },
    {
        name: 'final-question',
        path: '/:lang/final-question',
        component: require('./components/solution-selector/FinalQuestion.vue').default,
        meta: {title: 'Solution Selector'},
    },
    {
        name: 'contact-information',
        path: '/:lang/contact-information',
        component: require('./components/solution-selector/ContactInformation.vue').default,
        meta: {title: 'Solution Selector'},
    },
    {
        name: 'checking-data',
        path: '/:lang/checking-data',
        component: require('./components/solution-selector/Base.vue').default,
        meta: {title: 'Solution Selector'},
    },
    {
        name: 'thank-you',
        path: '/:lang/thank-you',
        component: require('./components/solution-selector/ThankYou.vue').default,
        meta: {title: 'Solution Selector'},
    }
    ,
    {
        path: "/",
        redirect: "/en"
    }
];

// Create the router instance
const router = new VueRouter({
    mode: 'history',
    base: process.env.BASE_URL,
    routes, // short for `routes: routes`
    app,
});

const admin = 1;
const title = document.title;

function checkRoute(param) {
    if (param != undefined) {
        let string = param;
        string = string.replace(/[\s\/]/g, '');
        let pattern = new RegExp("^(?=.*[0-9]$)(?=.*[a-zA-Z])");
        let result = pattern.test(string);
        return result;
    }


}

//
// function apiCall(param){
//     let step = '1112';
//     let string = param;
//     string = string.replace(/[\s\/]/g, '');
//     let url = '/api/selectedItemUrl/'+string;
//     axios.get(url).then(response => {
//         response = response.data;
//         step = response.data.last_step;
//         console.log(step);
//     }).catch(error => {
//         console.log(error)
//     });
//     return step;
// }

routes.map(function (route) {
    route.path = '/:lang' + route.path
})
router.beforeEach((to, from, next) => {
    const lang = to.params.lang;
    if (!["en", "ar"].includes(lang)) return next("en");
    if (i18n.locale !== lang) {
        i18n.locale = lang;
    }
    var str = window.location.href;
    str = str.split("/");
    let check = checkRoute(str[3]);
    document.title = (title + ' | ' + to.meta.title)
    if (check) {
        console.log(to);
        router.app.$store.commit('setBookmarkUrl', str[3]);
        next({name: "checking-data", params: {lang: "en"}, replace: true});
    }
    next();
});
export default router
...