2017-01-30 5 views
1

Я создаю SPA, используя Vue js, и это работает, но у меня есть одна проблема. Когда в Vue включен режим истории, я могу ввести URL-адреса и перейти на эту страницу с помощью Vue Router, но когда я пытаюсь войти в систему, я получаю литеральный html-страницу. Я знаю, что могу сделать что-то вроде auth\{vue?}, но я бы предпочел, если бы мне не пришлось это делать. Я хочу иметь возможность всегда сохранять URL без префиксов, если только это не относится к запросу API. Так, например:Vue SPA url не работает с включенным режимом истории

У меня есть вид корня:

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

, а затем у меня есть запросы API:

Route::group(['prefix' => 'api'], function() { 
    Route::post('/login', 'Auth\\[email protected]'); 

    Route::post('/register', 'Auth\\[email protected]'); 

    Route::get('/logout', 'Auth\\[email protected]'); 
}); 

но когда я ударил /api/login я получаю данные возврата вида из /{vue?}.

Я надеюсь, что это имеет смысл, и если так, то любая помощь будет потрясающей, спасибо.

+0

Скорее всего, нам нужно будет увидеть ваш JavaScript –

ответ

3

это четко описано здесь: https://kjamesy.london/work/laravel-53-vuejs-20-make-vuerouters-history-mode-play-nicely-with-laravels-routes

Краткая история: объявить режим истории ложь в VueRouter, а затем на стороне Laravel, когда $request->ajax() ложно, тот же маршрут всегда будет фиксировать запрос. Таким образом, мы можем с уверенностью определить маршрут, позволяющий перенаправить такой трафик на метод index() нашего контроллера ресурсов:

 Смежные вопросы

  • Нет связанных вопросов^_^