为什么我的应用代码无法在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>
答案 0 :(得分:1)
问题在于Laravel和Vue的路线不相同。 Vue路线有点虚。它们仅存在并在浏览器中工作。 Vue用于单页应用程序-aka 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',
});