3

vue-router を正常にセットアップしましたが、laravel 5.3 ルートと混合する際に問題があります。

ホームへのphpルートがあります:

Route::get('/', array('as' => 'home', 'uses' => 'HomeController@showWelcome'));

そして、私は vue-router ルートをセットアップしました:

'/user-feed': {
    name: 'user-feed',
    title: 'User Feed',
    component: Feed
},

'*': {
    component: PageNotFound
}

私のweb.phpルートファイルには、次のものがあります。

Route::get('/', array('as' => 'home', 'uses' => 'HomeController@showWelcome'));

// use vue-router route
Route::get('/{subs}', [function () {
    return view('layouts');
}])->where(['subs' => '.*']);

ここでの問題は、ルートの順序を変更し (ホーム ルーターの前に vue-router を配置)、homeルートにアクセスしようとすると、Page not foundvue-route がレンダリングされ、user-feedを介して使用できるようになることv-linkです。

vue-router がhomeルートの後にある場合、ホームは適切にレンダリングされますが、vue-routerそこからアクセスできv-linkず、vue-router にアクセスできる唯一の方法は URL を手動で入力することです。

vue-routerと一緒に使用するにはどうすればよいlaravel routeですか?

4

2 に答える 2

3

論理的な理由がない限り、フロント エンドのナビゲーションに 2 つを一緒に使用するべきではありません。Vue ルーターは単一ページ アプリケーションを対象としており、Laravel のルーティング システムはマルチページ アプリケーションまたは API を対象としています。私が考える最も一般的な設定/api/は、SPAを含む単一のテンプレートへのリダイレクトなどを除いて、すべてのLaravelルートを持つことapp.blade.phpです. そこから、vue-router がフロント エンド ナビゲーションになり、/api/エンドポイントが laravel にデータを出し入れする方法になります。

于 2016-09-27T01:28:18.753 に答える
0

これを試してくださいこれはあなたの問題を解決するかもしれません

export var router = new Router({
  hashbang: false,
  history: true,
  linkActiveClass: 'active',
  mode: 'html5'
});
router.map({
  '/': {
    name: 'home',
    component: Home
  },
  '/dashboard': {
    name: 'dashboard',
    component: Dashboard
  },
  '/404notfound': {
    name: 'pagenotfound',
    component: Pagenotfound
  }
});

// For every new route scroll to the top of the page
router.beforeEach(function() {  
  window.scrollTo(0, 0);
});

// If no route is matched redirect home
router.redirect({
  '*': '/404notfound'
});
于 2016-09-27T05:03:10.847 に答える