gpt4 book ai didi

laravel - Inertia.JS 在发布请求后重新加载 Prop

转载 作者:行者123 更新时间:2023-12-05 09:32:58 56 4
gpt4 key购买 nike

我目前很困惑为什么 Inertia.js 没有重新加载或重新呈现我的页面。

我有一个可以填写的表格,一旦提交就会执行:

Inertia.post("/ban", ban);

这将重定向到我的 Laravel 的 web.php 中的一个 POST。看起来像这样:

Route::post("/ban", [Speler::class, "ban"]);

这将重定向到一个名为“Speler”的类,其中有一个名为“ban”的函数。完成一些 SQL 语句后,它将执行此返回:

return Redirect::route("speler", [$steam])->with("success", "Ban doorgevoerd!");

这将返回到 web.php,并使用 session 数据“成功”转到路由 speler。该重定向进入 web.php:

Route::get("/speler/{steam}", [PageLoader::class, "speler"])->name("speler");

这个转到 PageLoader Controller ,并执行“speler”函数。

但这里变得很奇怪,这将返回一个 Inertia::render 与该人所在的同一页面,但需要添加另一个 Prop ,或更改 Prop 。 (这样我就可以显示一个带有成功文本的弹出窗口)

return Inertia::render("Panel/Speler",
["steamNaam" => $steamNaam, "discord" => $discord, "karakterAantal" => $karakterAantal, "karakters" => $karakters, "sancties" => $sanctiesReturn, "punten" => $aantalPunten, "steamid" => $steamid, "success" => $melding]
);

“成功”属性包含 $melding,它只包含一个字符串。

但由于某种原因,它似乎没有重新呈现页面,表单保持填充状态, Prop 是相同的。有人有解决方案吗?

最佳答案

如果您使用 form helper 设置表单,您可以像这样在成功的帖子上重置表单:

form.post('/ban', {
preserveScroll: true,
onSuccess: () => form.reset(), // reset form if everything went OK
})

你设置的成功信息

return Redirect::route("speler", [$steam])->with("success", "Ban doorgevoerd!");

通常由 Inertia 中间件处理并作为“共享数据”提供。参见 this docs page关于如何配置。共享数据呈现在 $page.props 变量中。在那里您可以找到 Ban doorgevoerd! 消息。您可以按如下方式向用户显示这些内容:

<div v-if="$page.props.flash.message" class="alert">
{{ $page.props.flash.message }}
</div>

根据您的实现,您可能需要监视此属性。查看FlashMessages component在 pingCRM 演示应用程序上进行示例实现。

关于laravel - Inertia.JS 在发布请求后重新加载 Prop ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67607969/

56 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com