我基本上是使用VueRouter创建所有运行良好的路由。但是,我的应用程序是使用Laravel构建的。因此,如果刷新任何路由,都会收到一条错误消息,即未定义路由。因此,在每个控制器中的每一分钟,我都必须添加一个索引函数。这只是返回我的app.blade的视图,它只是通常的标签等,并加载我的单页面应用程序。我只是想知道是否有更清洁的解决方案?我想我可以将return视图移动到单个Controller中,并让我的Controller对此进行扩展。但是我只是想知道我是否还有更好的方法?
即我通过VueRouter的其中一条路线:
{
path: "/clients",
name: "clients",
component: () => import(/* webpackChunkName: "clients" */ "../resources/js/components/Views/Clients/Clients.vue")
},
clients.php文件中的路由
Route::get('/clients', [App\Http\Controllers\ClientController::class, 'index'])->name('clients');
然后使用ClientController索引功能
public function index()
{
return view('app');
}
最好在其他地方完成app.blade的加载,而无需为每个控制器指定。任何帮助将不胜感激,以确保一切都高效完成!
谢谢!
答案 0 :(得分:0)
这是我为其中一个项目(也是Vue和Laravel中的单页应用程序)解决的问题的方法:https://github.com/lyyka/laravel-vue-blog-spa/blob/master/routes/web.php
只需在您的路线文件中输入以下代码:
Route::get('/{any}', function () {
return view('welcome');
})->where("any", ".*");
在我的欢迎视图中,我有:
@extends('layouts.app')
@section('content')
<div class = "container">
<router-view></router-view>
</div>
@endsection
基本上,这将返回您对任何URL的应用视图,因此您的Vue SPA应该可以正常工作。通常,将回调函数放在您的路由文件中不是一个好习惯,但是在这种情况下,由于它是SPA,您甚至不会使用路由文件,因此此解决方案可以通过! :)