laravel - 如何在刀片中显示组件?
问题描述
为什么我的应用程序的代码在 Laravel 中不起作用?如果我设置地址/admin
,那么一切正常并显示 admin.blade.php 模板,如果我设置admin/one
,它显示 admin.blade.php,但应用程序中的材料未显示
这是有效的:
Route::get('/admin','AdminController@index')->middleware(['auth', 'auth.admin']);
<body>
it's work
<div id="app">
it's working
<router-view></router-view>
</div>
<script src="js/app.js">
</script>
</body>
但这不是:
Route::get('/admin/one','AdminController@index')->middleware(['auth', 'auth.admin']);
<body>
it's work
<div id="app">
it's not working
<router-view></router-view>
</div>
<script src="js/app.js">
</script>
</body>
解决方案
重点是 Laravel 和 Vue 的路由不一样。Vue 路由有点虚拟。它们只存在于浏览器中并在其中工作。Vue 用于单页应用程序 - 也称为 SPA。
为了使它起作用,您应该更改您的管理路线以匹配以“/admin”开头的任何内容
所以,你的路线应该是这样的:
Route::get('/admin/{param?}','AdminController@index')->where('param', '(.*)')->middleware(['auth', 'auth.admin']);
它应该与您的 vue 应用程序一起返回刀片视图。然后,您的 Vue 应用程序应该根据请求的路由显示请求的页面。这就是 vue-router 的用途。并且所有或您的管理页面和布局都应由 Vue 处理。在你的 Vue 的 resources/js/router/index.js 中(我想你使用 Laravel Mix)
export const routes = [
{
path: '/',
component: MainLayoutComponent,
redirect: { name: 'home' },
children: [
{
path: 'home',
name: 'home',
component: AdminHome,
meta: {
title: 'Main Page'
},
},
]
}
];
const router = new Router({
routes,
base: '/admin',
mode: 'history',
});
推荐阅读
- python - 优化 numpy 网格创建以实现高效插值
- python - 写入 excel 文件的 Python 程序仅写入最后一行
- c# - 如何在 Docker 中使用 Selenium 运行 dotnet core 应用程序
- java - spring boot - 将正确的响应映射到请求,用于多异步调用
- c# - 如何在 C# 控制台应用程序中实现垂直滚动条
- react-native - react-native unrecognized font family FontAwesome5Pro-Solid
- javascript - 错误:页面的字符编码必须在文档或传输协议中声明
- javascript - event.stopPropagation 不适用于伪元素?
- c# - ASP.NET Core 中的循环依赖
- php - 向/从二维数组添加/获取数据不起作用