【问题标题】:How do I get flash messaging working with Laravel Breeze, inertia and vue3?如何使用 Laravel Breeze、惯性和 vue3 获得 Flash 消息传递?
【发布时间】:2022-07-01 22:22:44
【问题描述】:

我在这方面关注了几个例子,包括关于 flash 消息的 laracasts 视频,但无论出于何种原因,我永远无法将数据传递给加载到道具中。这是我所拥有的:

In HandleInertiaRequests.php:
'flash' => function () use ($request) {
        return [
            'success' => $request->session()->get('success'),
            'error' => $request->session()->get('error'),
        ];


From a controller:
...
$page->save();
return redirect('/admin/pages')->with('success', 'Page created successfully');

当我保存一个页面时,我检查了 vue 开发工具并找到了这个:

我还发现有趣的是,当页面在具有 with(...) 数据的路由上重新加载完整页面时,该数据会使用传递给 with 的名称填充道具,但即使这样也不允许填充 Flash 道具的中间件,它(奇怪地)在“page.props.success”处创建了一个新道具,“page.props.flash.success”仍然为空。

【问题讨论】:

  • 奇怪的是,我已经使用“page.props.flash ...”让组件工作,但我的 vue devtools 将这些值显示为 null。我对此感到困惑。我的一个朋友把它转起来,他的开发工具显示了填充的道具。

标签: laravel vue.js laravel-8 inertiajs


【解决方案1】:

您确定将 flash 方法传递给 return 语句吗?

HandleInertiaRequests.php 中间件中,您应该像这样将 flash 函数添加到 array_merge 函数中:

return array_merge(parent::share($request), [
'flash' => function () use ($request) {
            return [
                'success' => $request->session()->get('success'),
                'error' => $request->session()->get('error'),
            ];
        },
]

或将闪存保存在像$data 这样的变量中,并将其传递给array_merge 方法。

【讨论】:

    猜你喜欢
    • 2021-05-04
    • 1970-01-01
    • 2021-10-21
    • 2016-04-09
    • 1970-01-01
    • 2019-03-24
    • 2021-01-23
    • 2019-08-22
    • 2017-06-30
    相关资源
    最近更新 更多