【问题标题】:How do i show component in blade?如何在刀片中显示组件?
【发布时间】:2019-05-16 11:03:09
【问题描述】:

为什么我的应用程序的代码在 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>

【问题讨论】:

  • 也分享控制器的方法?
  • /admin 之后的所有路由都是针对 vue 路由器的路由,而 vue 路由器可能没有/admin/one
  • 您能分享一下您的public function index() 在您的AdminController.php 中的样子吗

标签: laravel vue.js laravel-5


【解决方案1】:

重点是 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',
});

【讨论】:

    猜你喜欢
    • 2014-06-22
    • 2018-09-24
    • 2020-04-09
    • 2018-12-12
    • 2020-06-18
    • 2021-02-14
    • 2019-10-14
    • 2021-08-30
    • 2018-06-22
    相关资源
    最近更新 更多