首页 > 解决方案 > 如何在 laravel 中为资源控制器添加自定义函数?

问题描述

我正在尝试为我用作 ResourceController 的 Controller 类创建一个自定义函数。我这样做是因为我只想更新 1 个字段,但我想保留现有的更新功能用于其他事情。

正如人们所说,我试图将它放在api.php中的资源之前,但仍然没有好处。

Route::put('/post/reorder/{id}', 'PostController@reorder');
Route::resource('/post', PostController::class);

这是控制器中的代码

public function reorder(Request $request, $id){

        $post = Post::findOrfail($id);
...

此外,在运行php artisan route:list时,它会显示此错误。

   Illuminate\Contracts\Container\BindingResolutionException

  Target class [PostController] does not exist.

这是VUE中调用它的代码

export const API_URL = "http://localhost:8000/api/post";

axios
        .put(API_URL + `/reorder/${item.id}`, {
          // title: item.title,
          // path: item.path,
          // description: item.description,
          order: newIndex,
        })

当我运行它时,它给出了内部服务器错误 500

当我使用资源给我的默认功能时,它可以工作,我只是不想输入我不想更改的字段。

那么我做错了什么?

标签: mysqllaravelvue.jslaravel-8

解决方案


我认为您正在使用 laravel8 并且您的路线不正确

尝试这个:

Route::put('/post/reorder/{id}', [PostController::class, 'reorder']);

推荐阅读