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

标签 laravel vue.js vuejs3 inertiajs

我目前很困惑为什么 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/

相关文章:

php - 在for循环php中创建数组

php - 为什么 livewire 数据绑定(bind)不起作用?

vue.js - Vuex 无法读取未定义的属性 'state'

javascript - VueJS 读取 Dom 属性

vue.js - 如何预渲染 Vue3 应用程序?

php - 如何从字段表返回数据 api(fractal) 已设置默认值?

PHP SQLSTATE[HY000] [1045] 用户 Laravel 访问被拒绝

vue.js - 如何使用 Vue 3 组件内的 Vuex 4 状态数据作为另一个调度的有效负载?

vue.js - Vue js 多选 - 具有自定义建议文本

javascript - 有什么方法可以在对象键上使用 'defined' 运算符吗?