【问题标题】:How to use API resources in Laravel Inertia?如何在 Laravel Inertia 中使用 API 资源?
【发布时间】:2022-12-13 20:01:21
【问题描述】:

我正在使用 Laravel 9、Jetstream、Inertia、Vue 3。

我为我的模型项目创建了一个 Api 资源

$projects = ProjectResource::collection(Project::get());

return Inertia::render('Project/Edit', compact('projects'));

在 Vue 中,在道具“项目”中,我得到一个嵌套数组“数据”,并且只有我需要的对象已经在其中。

projects: Reactive
data:Array[2]
0:Object
1:Object

它应该是这样的

projects:Reactive
0:Object
1:Object

我不想通过“projects.data”访问 vue 中的道具 我希望它是:“项目” 如何做到这一点?

【问题讨论】:

    标签: vuejs3 laravel-9 inertiajs


    【解决方案1】:

    取自 laravel 官方文档 (Data Wrapping)

    默认情况下,当资源响应转换为 JSON 时,您的最外层资源被包装在数据键中。

    为了关闭此行为:

    如果您想禁用最外层资源的包装,您应该在基础 IlluminateHttpResourcesJsonJsonResource 类上调用 withoutWrapping 方法。

    所以基本上你需要运行:

    JsonResource::withoutWrapping();
    

    在您的 AppServiceProvider 的引导方法中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-08
      • 1970-01-01
      • 1970-01-01
      • 2020-06-13
      • 2020-03-23
      • 1970-01-01
      • 2023-01-20
      • 2022-10-04
      相关资源
      最近更新 更多