2017-02-25 53 views
1

我正在嘗試使用Laravel和Vue創建SPA網站。我也想做本地化。但本地化構建只是使用沒有Vue的laravel。如果我用正則表達式除去#在URL(blog.com/#/)這樣web.php如何使用正則表達式在本地化Laravel 5.4與Vue JS

Route::group(['middleware' => 'locale'], function() { 

    Route::get('/{vue?}', function() { 
    return view('main'); 
    })->where('vue', '[\/\w\.-]*'); 
}); 

Route::get('lang/{locale}', function($locale) { 
    Session::put('locale', $locale); 
    return back(); 
}); 

它的工作..但不幸的是這打破了我的本地化網址:

<li><a href="{{url('lang/id')}}"><img src="{{asset('images/flag/id.png')}}"></a></li> 
<li><a href="{{url('lang/en')}}"><img src="{{asset('images/flag/en.png')}}"></a></li> 

但是,如果我

Route::get('/{vue?}', function() { 
return view('main'); 
}); 
:從路線

Route::get('/{vue?}', function() { 
return view('main'); 
})->where('vue', '[\/\w\.-]*'); 

變成這個樣子,其中刪除0

它的工作的定位,但它不適用於某些URL的工作,如: http://blog.com/post/create

,但如果我更改URL,以http://blog.com/create,它的工作..

URL測試:

工作:

  1. blog.com
  2. blog.com/about
  3. blog.com/create

不工作

  1. blog.com/posts/create

這是VUE路線routes.js

import VueRouter from 'vue-router' 
let routes = [ 
{ 
    path: '/', 
    component: require('./pages/Home') 
}, 
{ 
    path: '/about', 
    component: require('./pages/About') 
}, 
{ 
    path: '/posts/create', 
    component: require('./posts/create') 
} 
] 

export default new VueRouter({ 
    routes, 
    linkActiveClass: 'is-active', 
    mode: 'history' 

}) 
+1

如果你把'path:'/ create'',離開'component:require('./posts/create')',那該怎麼辦? –

+0

您的建議確實有效。但我只是想讓網址變成這樣:blog.com/posts/create。如果我從路由中移除它(blog.com/posts/create)不起作用。如果我可以選擇,我只是想使用正則表達式來使url {{url('lang/id')}}'爲本地化工作。 – Ayuktia

+0

我不確定你的意思是「沒有工作」(我真的不知道它做了什麼),所以也許詳細說明一下。 –

回答

0

現在解決。我只是用這個代碼來解決這個問題。

if (! request()->ajax()) { 
Route::group(['prefix' => 'posts'], function() { 
    Route::get('/{vue?}', function() { 
     return view('main'); 
    })->where('vue', '[\/\w\.-]*'); 
    }); 
}