laravel 如何用Inertiajs2 post request close modal dilaog成功?

xqkwcwgp  于 2023-05-01  发布在  其他
关注(0)|答案(1)|浏览(114)

在laravel 9 /Inertiajs 2/vuejs 3中,我在模态对话框中有联系我们表单,当我在主页上打开它时

http://local-bi-currencies.com/

我用inertiajs方法提交这个表格

formEditor.value.post(route('frontend.store_contact_us'), {
        preserveScroll: false,
        onSuccess: (resp) => {
            show_contact_us_modal.value = false
            Toast.fire({
                icon: 'success',
                title: 'Your message was successfully sent. You will get feedback within next 24 hours !!'
            })
        },
        onError: (e) => {
            showRTE(e)
            console.log(e)
        }
    })

和控制器中的动作:

public function store_contact_us(ContactUsRequest $request)
{
    $contactUs = null;
    try {
        DB::beginTransaction();
        $contactUs = ContactUs::create([
            'title'           => $request->title,
            'author_id'       => auth()->user()->id,
            'content_message' => $request->content_message
        ]);

        DB::commit();
    } catch (QueryException $e) {
        DB::rollBack();

        return back()->withErrors(['message' => $e->getMessage()]);
    }

    return Inertia::render('Frontend/Home/Home', // Link to home page again
        ['' => $contactUs]
    );
}

作为结果,新的contsct保存好,但我的页面的url成为存储方法的url

http://local-bi-currencies.com/store_contact_us

这是错误的URL,如果要进行一些操作,可能会引发错误。
我在这里不使用axios,因为我想使用inertiajs的发布/验证功能,而axios请求中没有这些功能。如果有一种方法可以返回Inertia::render of store_contact_us方法的一些假的vue文件,而无需重新打开整个hoem页面,也无需将浏览器的urt更改为

http://local-bi-currencies.com/store_contact_us


谢谢!

woobm2wo

woobm2wo1#

你可以按照评论中的说明重定向回去,或者,如果你想转到一个特定的页面,你可以使用to_route(简化示例):

$user = User::query()->create($request->all());
    return to_route('users.show', ['user' => $user], 201);

相关问题