如何在 laravel 中为资源控制器添加自定义函数?

Posted

技术标签:

【中文标题】如何在 laravel 中为资源控制器添加自定义函数?【英文标题】:How do I add a custom function for a resource controller in laravel? 【发布时间】:2021-10-08 13:55:06 【问题描述】:

我正在尝试为我用作 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

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

那么我做错了什么?

【问题讨论】:

【参考方案1】:

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

试试这个:

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

【讨论】:

嗯,好吧,显然就是这样。现在工作正常。谢谢!

以上是关于如何在 laravel 中为资源控制器添加自定义函数?的主要内容,如果未能解决你的问题,请参考以下文章

在 Laravel 中为资源控制器添加新方法

如何在 Laravel 5.5 中为选定的请求类设置自定义响应

Laravel如何在Eloquent模型中添加自定义函数?

在 Lumen/Laravel 控制器中添加自定义逻辑的最佳实践

Laravel JSON API: 如何从数据库中创建自定义的虚拟资源(用于聚合值)?

如何在 Laravel 8 中为完整的日历 JS 插件添加额外的字段值