gpt4 book ai didi

reactjs - 使用 admin-on-rest 添加嵌套资源

转载 作者:行者123 更新时间:2023-12-03 14:03:46 25 4
gpt4 key购买 nike

我正在使用 admin-on-rest。多么棒的框架啊!它对于我的扁平资源运行得很好。

我正在检索项目列表 /projects。我已经实现了一个 ProjectEdit View 来编辑给定的项目 /projects/:id

export const ProjectEdit = props => {
const projectId = props.match.params.id;

return (
<Edit title={<ProjectTitle />} {...props}>
<TabbedForm>
<FormTab label="Project">
<DisabledInput source="id" />
<TextInput source="name" />
</FormTab>
<FormTab label="Companies">
// WHAT Should I put here to edit my companies list ???
</FormTab>
</TabbedForm>
</Edit>
);
};

我想实现一个新选项卡,通过它我可以在项目中添加/删除公司。

获取/projects/:id/companies

{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 2,
"name": "My Company"
}
]
}

POST /projects/:id/companies

删除/projects/:id/companies/:company_id

我尝试使用 ReferenceManyField 但无法配置它,因为我的 API 需要自定义 GET。我的项目没有任何公司引用。我找不到任何有关如何执行它的示例。

请问有什么线索吗? :)

<小时/>

编辑1:我可以使用 @malisbad answer 显示我的项目公司列表。但我仍然无法显示它的版本(例如:使用 ReferenceArrayInput + SelectArrayInput)

最佳答案

您必须使用自定义的restClient。我也遇到了同样的问题,所以如果您还没有,请创建它。

然后查看数据如何到达您想要为其提供子资源的每个方法,并修改 URL 并请求从那里触发。

例如,在 GET_MANY_REFERENCE 中,我的 target 包含一个 ENUM,指定我正在查找子资源。

let url = `${apiUrl}/${resource}`;
case GET_MANY_REFERENCE: {
let target;
try {
target = JSON.parse(params.target);
} catch (err) {
target = {};
}

/*
Reference fields do not support the format of
/<resource>/<resource id>/<subresource> so the target parameter is used
to instead indicate the subresource call. See
https://marmelab.com/admin-on-rest/Fields.html#referencefield
for details on reference fields
*/
if (target && target[ENUMS.SUBRESOURCE_IDENTIFIER]) {

/*
If a resource ID is present, it's because the base resource doesn't match the
host resource and needs to use its own ID, not the host resource ID.
*/
if (target[ENUMS.RESOURCE_ID]) {
url = `${url}/${target[ENUMS.RESOURCE_ID]}/${target.subresource}`;
} else {
url = `${url}/${params.id}/${target.subresource}`;
}
}

然后您可以将其扩展到 REST 客户端的其他部分

关于reactjs - 使用 admin-on-rest 添加嵌套资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47348231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com