如何return new model return in response 响应?

How to return new model return in response response?

在 laravel8/inertia/vue3 应用程序创建模型中,我将表单模式设置为“添加”模式,并在创建新模型时尝试 return 它作为回应,例如:

$角色=Role::create([ 'name' => $request->name, 'guard_name' => 'web', ]);

return back ()->with('data', [
    'role' => $role,
]);

但是我无法在客户端使用代码获得这个新模型:

this.form.post(this.route('admin.roles.store'), {
    preserveScroll: true,
    onSuccess: (resp) => {
        console.log('resp::')
        console.log(resp)
        Toast.fire({
            icon: 'success',
            title: 'New role created!'
        })
    },

在浏览器中,我没有看到来自控件的模型 return:https://prnt.sc/1xxhS-EOHLSh

我该怎么做?

谢谢!

我认为你误解了一些事情:

首先: 当您使用 ->with 时,您会将 data 放入会话闪存中。您不会将其退还给客户。将结果放入闪存中可能不是您想要的。

return back ()->with('data', [
    'role' => $role
]);

其次:如果打算在客户端使用onSuccess来处理响应,则不能return back()。您需要以传统的 AJAX 方式向客户端发送实际响应,如下所示:

return [
   'data' => $role
];

第三: 我鼓励你避免使用 onSuccess 并像上面描述的那样返回 JSON,因为这违背了 Inertia 和我相信它更像是一个逃生舱口,适用于您无法以“惯性方式”做事的情况。