后端的 Laravel VueJS 路由器

Posted

技术标签:

【中文标题】后端的 Laravel VueJS 路由器【英文标题】:Laravel VueJS Router in backend 【发布时间】:2020-08-14 15:57:51 【问题描述】:

我正在开发一个所有前端都由 vuejs 管理的 Laravel 项目。

所以,我在以下位置定义了所有后端路由:

routes/api.php

而文件:routes/web.php 它只有这条路线:

Route::view('all', 'app')
    ->where('all', '^((?!api).)*')
    ->name('vue');

将所有责任交给 vue.js。

所以在resources/js(vue 端)里面我定义了前端路由,例如:


    path: '/',
    name: 'home',
    component: home,
    meta: 
        auth: true,
    
,

    path: '/invoices/show/:id',
    name: 'invoices.show',
    component: InvoicesShow,
    meta: 
        auth: true,
    
,

现在的问题:

我开始尝试创建一些通知。

所以在通知上我必须把链接放在客户必须去的地方,但是这个链接是前端的……所以在 Laravel 我不能写 vue.js 路由。那么问题来了,vue.js的命名路由可以写吗?

我想在通知上定义这个链接,例如:

->action('View Invoice', route('invoices.show', $invoiceId));

但命名路由“invoices.show”在 Laravel 路由中不存在。它在 vuejs 路由器上定义,在:resources/js/router/routes.js

所以它不会起作用。

是否可以通过名称获取 vuejs 路由器?

【问题讨论】:

你能解释清楚一点吗?我不明白你到底需要什么...... 我改进了问题 【参考方案1】:

其中一个肮脏的解决方法是保留 VueJs 路由,并在您的 routes/web.php 文件中为 Laravel 创建一个新的相同“帮助”路由。

所以你的 web.php 应该是这样的:

Route::view('/invoices/show/id', 'app')->name('invoices.show');
//Here you can add additional "helpers" routes as needed

Route::view('all', 'app')
    ->where('all', '^((?!api).)*')
    ->name('vue');

在这种情况下,VueJs 仍然可以正常工作,您可以在项目中使用 route() 辅助函数,但缺点是如果有任何更改,您需要维护两条路由。

【讨论】:

【参考方案2】:

目前,我觉得不可能做到这一点。 所以我只是写了完整的url“硬编码”。

->action('View Invoice', route('vue', ['all' => "invoices/show/$invoiceId"]));

这解决了我的问题,但我无法使用 vue.js 命名的路由。

【讨论】:

以上是关于后端的 Laravel VueJS 路由器的主要内容,如果未能解决你的问题,请参考以下文章

Laravel-vuejs(Vue 路由器)Javascript 在 onchange url 中不起作用

Laravel - 使用惯性访问路由来填充 Vuejs3 中的道具

vuejs 和 laravel 中的路由不支持 post 方法

带有 Laravel 5.4 后端的 Vuejs 2,发布(未经授权)错误

API 路由在 Laravel VueJS 应用程序中不起作用

在 Vue JS 组件中使用 Laravel 路由的最佳方法是啥