在设置路由并通过 Inertia 调用它后,我遇到了 URL 如何在浏览器中显示的问题。
如果我手动输入,来自
Route::get('/blogs/{post}', [BlogController::class, 'show']);
的路线web.php
工作正常,例如localhost:3000/blogs/1
。
但是,如果我单击该按钮,
<Link>
将不起作用,而是 URL 显示为 http://localhost:3000/blogs/?post=1
。有没有办法从 URL 中删除 ?post=
?
下面是我的 Vue 组件,显示了
<Link>
<div class="wrapper" v-if="blogs.length">
<div class="blog" v-for="blog in blogs" :key="blog">
<Link href="/blogs/" :data="{post:blog.id}">
<small>posted by: {{ blog.id }}</small>
{{ blog.title }}
</Link>
<button type="button" @click="destroy($event, blog.id)">
Delete post
</button>
</div>
</div>
请注意,我正在关注 https://inertiajs.com/links 中的文档。
问题是你传递了
data
道具。这将导致对象作为请求的有效负载传递。这就是为什么它最终作为查询字符串附加到路由中。
// change this
<Link href="/blogs/" :data="{post:blog.id}">
// to this
<Link href="/blogs/your-blog-id-goes-here" >
致未来的开发者,现在更方便了。
route('blogs.update', { post: blog.id })
如有需要请更改路线名称和参数