vuejs-br / forum

Fórum sobre a tecnologia Vue.js, totalmente em português!
MIT License
223 stars 3 forks source link

SPA com Laravel - router após efetivar login via php #17

Open azeredo opened 6 years ago

azeredo commented 6 years ago

Boa noite tudo bem?

Estou tentando criar uma SPA com Laravel e Vuejs, e um dos pontos que estou tendo dificuldade é com o conflito entre as rotas do laravel com as rotas do vuejs.

Ao entrar no site (meusite.com), o sistema redireciona para a view de login, e ao fazer o mesmo o sistema vai para a rota meusite.com/site/login desta forma o usuário está na "home" da aplicação.

Esta pagina é composta por um menu lateral esquerdo, e um top menu. No tob menu serão abertas abas conforme o usuario clique nos links do menu lateral. Por default já vem com a aba "Home".

Para carregar o conteudo desta aba Home, ao montar o componente vue, eu faço um this.$routes.push('/site/login/home') e isto funciona corretamente.

O problema está quando, eu faço um reload nesta página, ou quando tento acessar uma outra aba, por exemplo Sobre. Esta abra sobe está com o route-link para '/site/login/sobre', mas tanto no reload quando tentando acessar esta rota sobre o sistema volta para o endereço '/site/login', perdendo o "nome" do rotemanete e o laravel retorna uma "Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException".

No laravel fiz uma alteração no web.php onde: Route::get('/site/login/{name}', function() { return redirect('/site/login/'); })->where('name','[A-Za-z]+');

Onde pode estar o meu erro?

grzmartins commented 6 years ago

@azeredo eu utilizo essa rota no meu arquivo web.php

https://mattstauffer.com/blog/getting-started-using-vues-vue-router-for-single-page-apps/ Route::get('/{vue_capture?}', function () { return view('app'); })->where('vue_capture', '[\/\w\.-]*');

E minhas requisições no arquivo api.php

LucasLeandro1204 commented 5 years ago

Talvez seja meio tarde, mas geralmente a API fica em /api ou api.domain.com.br, assim não ocorrem conflitos. Inclusive se vc estiver declarando as rotas em api.php elas já são prefixadas com /api junto com mais algumas coisas