如何在 Resource Routes url 中显示 id?
How to show id in Resource Routes url?
更新:
前端的这行代码是罪魁祸首:
<inertia-link v-if="options.edit" :href="'/admin/gallery/edit/1'">
我不得不将其更改为:
<inertia-link v-if="options.edit" :href="'/admin/gallery/1/edit'">
使其符合@Babak 提供的 edit
的 laravel resource format。
原文Post:
如何在 web.php
:
中转换这条路线
Route::get('/admin/gallery/edit/{id}', function ($id) {
$data = Gallery::find($id);
return inertia('backend/cms-gallery-edit', ['data' => $data]);
});
到具有资源控制器功能的资源路由:
Route::resource('/admin/gallery', GalleryController::class);
GalleryController.php
:
public function edit($id)
{
$data = Gallery::find($id);
// assign id to end of route
return inertia('backend/cms-gallery-edit', ['data' => $data]);
}
编辑:
我已经尝试了@Babak 回答的两种方法,它们适用于 index
和 create
路由,但 edit
路由仍然抛出 404
。这是唯一包含 id
.
的路线
web.php
:
Route::resource('/admin/gallery', GalleryController::class)->only('index', 'create', 'edit');
GalleryController.php
:
public function edit($gallery)
{
$data = Gallery::find($gallery);
return inertia('backend/cms-gallery-edit', ['data' => $data]);
}
Inertia 通过 href 从前端传递 id
:
<inertia-link v-if="options.edit" :href="'/admin/gallery/edit/1'">
浏览器显示:
GET http://127.0.0.1:8000/admin/gallery/edit/1 404 (Not Found)
laravel资源路由方法有固定结构,您可以查看完整列表here。对于编辑页面,它会生成类似 '/admin/gallery/{gallery}/edit'
的内容
你可以这样写:
在您的 web.php
文件中:
Route::resource('/admin/gallery', GalleryController::class)->only('edit');
并且在您的控制器中,资源的名称必须与您的函数的参数相同。
public function edit($gallery)
{
$data = Gallery::find($gallery);
// assign id to end of route
return inertia('backend/cms-gallery-edit', ['data' => $data]);
}
或者,您可以使用 parameter
方法自定义它。参考here
Route::resource('/admin/gallery', GalleryController::class)->only('edit')->parameters([
'gallery' => 'id'
]);
还有你的控制器
public function edit($id)
{
$data = Gallery::find($id);
// assign id to end of route
return inertia('backend/cms-gallery-edit', ['data' => $data]);
}
更新:
前端的这行代码是罪魁祸首:
<inertia-link v-if="options.edit" :href="'/admin/gallery/edit/1'">
我不得不将其更改为:
<inertia-link v-if="options.edit" :href="'/admin/gallery/1/edit'">
使其符合@Babak 提供的 edit
的 laravel resource format。
原文Post:
如何在 web.php
:
Route::get('/admin/gallery/edit/{id}', function ($id) {
$data = Gallery::find($id);
return inertia('backend/cms-gallery-edit', ['data' => $data]);
});
到具有资源控制器功能的资源路由:
Route::resource('/admin/gallery', GalleryController::class);
GalleryController.php
:
public function edit($id)
{
$data = Gallery::find($id);
// assign id to end of route
return inertia('backend/cms-gallery-edit', ['data' => $data]);
}
编辑:
我已经尝试了@Babak 回答的两种方法,它们适用于 index
和 create
路由,但 edit
路由仍然抛出 404
。这是唯一包含 id
.
web.php
:
Route::resource('/admin/gallery', GalleryController::class)->only('index', 'create', 'edit');
GalleryController.php
:
public function edit($gallery)
{
$data = Gallery::find($gallery);
return inertia('backend/cms-gallery-edit', ['data' => $data]);
}
Inertia 通过 href 从前端传递 id
:
<inertia-link v-if="options.edit" :href="'/admin/gallery/edit/1'">
浏览器显示:
GET http://127.0.0.1:8000/admin/gallery/edit/1 404 (Not Found)
laravel资源路由方法有固定结构,您可以查看完整列表here。对于编辑页面,它会生成类似 '/admin/gallery/{gallery}/edit'
你可以这样写:
在您的 web.php
文件中:
Route::resource('/admin/gallery', GalleryController::class)->only('edit');
并且在您的控制器中,资源的名称必须与您的函数的参数相同。
public function edit($gallery)
{
$data = Gallery::find($gallery);
// assign id to end of route
return inertia('backend/cms-gallery-edit', ['data' => $data]);
}
或者,您可以使用 parameter
方法自定义它。参考here
Route::resource('/admin/gallery', GalleryController::class)->only('edit')->parameters([
'gallery' => 'id'
]);
还有你的控制器
public function edit($id)
{
$data = Gallery::find($id);
// assign id to end of route
return inertia('backend/cms-gallery-edit', ['data' => $data]);
}