使用 Laravel Vue Inertia 堆栈中的数据重定向路由
Posted
技术标签:
【中文标题】使用 Laravel Vue Inertia 堆栈中的数据重定向路由【英文标题】:Redirect route with data in Laravel Vue Inertia stack 【发布时间】:2021-11-02 09:09:03 【问题描述】:在我的控制器中,我有
public function store(Request $request)
$postData = $this->validate($request, [
'name' => 'required',
'status' => 'required | boolean'
]);
Room::create([
'name' => $postData['name'],
'active' => $postData['status'],
]);
$message = "Room Added";
return redirect::route('rooms.index', ['msg' => $message]);
我在道具中使用了“味精”
props:['rooms','errors','msg']
但对于 msg 给出未定义且没有任何消息。
【问题讨论】:
【参考方案1】:您将 msg
作为参数传递给您的路线,而不是作为参数传递给您的 Inertia::render
调用。由于您正在重定向,您可能希望将消息闪现到会话并在HandleInertiaRequests
中间件上处理它。查看example in the documentation。
所以,首先你重定向到rooms.index
闪烁消息:
return redirect()->route('rooms.index')->with('message', 'My message');
然后,Inertia 以 XHR 请求的形式请求 rooms.index
路由,并且在到达您的 Controller 之前,它会通过 HandleInertiaRequests
中间件。
class HandleInertiaRequests extends Middleware
public function share(Request $request)
return array_merge(parent::share($request), [
'flash' => [
'message' => fn () => $request->session()->get('message')
],
]);
现在您可以通过以下方式在组件中访问它:
<template>
<main>
<header></header>
<content>
<div v-if="$page.props.flash.message" class="alert">
$page.props.flash.message
</div>
<slot />
</content>
<footer></footer>
</main>
</template>
【讨论】:
谢谢。我已经接受了来自 rooms.index 的 'msg' 和 Response $request 并分配给了一个道具。比如 $msg = $request->session()->get('msg'); 你的回答让我免于发疯。谢谢以上是关于使用 Laravel Vue Inertia 堆栈中的数据重定向路由的主要内容,如果未能解决你的问题,请参考以下文章
在 Laravel Inertia Vue 中初始化服务器端多列排序
使用 Vue.Js / Inertia.js 和 Laravel 对结果进行分页
如何使用 Laravel 8、Inertia.js 和 Vue3 定义全局变量?