1

我有一个表“fos_user”和“version”,我想显示“9.0.1.A”而不是“/version/1”。

=>fos_user https://i.imgur.com/C8f0qor.png

=>版本 https://i.imgur.com/HFSKIdz.png

是否可以像这样连接“版本”表的字段以在源中显示它? https://i.imgur.com/rxJBmtp.png

因为它会阻止我在“版本”表中创建新字段。

最好的祝福,

4

3 回答 3

2

反应管理员 | 如何在 ReferenceField 中连接源?

回答:

<ReferenceField label="Version" source="version" reference="versions"> <FunctionField render={version => `${version.major}.${version.minor}.${version.patch}.${version.letter}`} /> </ReferenceField>

于 2018-07-27T06:54:31.353 回答
1

我需要一个图像前缀。不幸的是,提供的解决方案对我不起作用......起初我试过

<ImageField source="prefix + contentUrl"/>

和上面的解决方案......

最终我找到了以下解决方案:

const MyImageField = ({source, record = {}, ...rest}) => {
    let clonedRecord = JSON.parse(JSON.stringify(record));
    clonedRecord[source] = process.env.REACT_APP_BASE_PATH + clonedRecord[source];
    return <ImageField source={source} record={clonedRecord} {...rest}/>;
};

export const ImageList = props => (
    <List {...props}>
        <Datagrid rowClick="edit">
            <MyImageField source="contentUrl"></MyImageField>
        </Datagrid>
    </List>
);

const dataProvider = baseHydraDataProvider(entrypoint, fetchHydra, apiDocumentationParser);

export default () => (
    <HydraAdmin dataProvider={dataProvider} authProvider={authProvider} entrypoint={entrypoint}>   
        <ResourceGuesser name={"media_objects"} list={ImageList}/>
    </HydraAdmin>
);

不知何故,我需要一个克隆,因为该函数被多次调用(-> 前缀被添加 x 次)。

我将它与API Platform结合使用。

另见:

https://marmelab.com/react-admin/Fields.html#writing-your-own-field-component

于 2020-04-13T13:16:05.697 回答
0

来自https://marmelab.com/react-admin/Fields.html#reference-fields

提示:如果您想显示来自多个字段的数据,请查看<FunctionField>接受渲染函数的 :

import { FunctionField } from 'react-admin';

<FunctionField
    label="Name"
    render={record => `${record.first_name} ${record.last_name}`}
/>;

因此,对于您的情况,它将是:

import { FunctionField } from 'react-admin';

<FunctionField
    label="Name"
    render={version => `${version.major}.${version.minor}.${version.patch}.${version.letter}`}
/>;
于 2021-11-26T00:43:13.110 回答