как создать сущность внутри другой в той же форме, используя admin-on-rest?

У меня есть Plants, у каждого из которых много Infos. Я хочу иметь возможность редактировать/создавать Plant и создавать adhoc Info, прикрепленный к нему..

Вот как я построил PlantEdit и PlantCreate:

export const PlantEdit = (props) => (
    <Edit title={<PlantTitle />} {...props}>
        <SimpleForm>
            <TextInput source="name"/>
        </SimpleForm>
    </List>
    </Edit>
);

export const PlantCreate = (props) => (
    <Create {...props}>
        <SimpleForm>
            <TextInput source="name"/>
        </SimpleForm>
    </Create>
);

вот функция InfoCreate - у нее есть меню предложений для поиска одного из уже существующих растений:

export const InfoCreate = (props) => (
    <Create {...props}>
        <SimpleForm>
            <TextInput source="name"/>
        </SimpleForm>
        <ReferenceArrayInput label="Info" source="plantId" reference="plants">
                <SelectArrayInput optionText="name" translate={false}/>
            </ReferenceArrayInput>
    </Create>
);

Они работают независимо.. но я хотел бы объединить их во время создания/редактирования Plant, чтобы он одновременно создавал Info.. другими словами, идентификатор растения «прикреплялся» к информации, пока я создавал ее с помощью Plant редактирования/создания. форма. Я думал о всплывающем окне, которое создает временный файл Info, и когда он отправляется, он сохраняется в базе данных.

Вот конфигурация приложения:

const App = () => (
    <Admin
        theme={getMuiTheme(customTheme)}
        title={<img src="imageserver/logo.png" alt="logo" width="120" height="auto" />}
        restClient={delayedRestClient}
        // restClient={jsonServerRestClient('http://localhost/plants/web/api/v1')}
        loginPage={Login}
        authClient={authClient}
        appLayout={Layout}
        dashboard={Dashboard}
        customRoutes={customRoutes}
        menu={Menu}
        messages={translations}
    >
        <Resource name="plants" list={PlantList} icon={PlantIcon} create={PlantCreate} edit={PlantEdit} />
        <Resource name="infos" list={InfoList} icon={InfoIcon} create={InfoCreate} edit={InfoEdit}  />
    </Admin>
);

export default App;

как с этим можно справиться?

Я попытался импортировать эти функции, и у меня возникли проблемы с импортом/экспортом, так что это не работает. Я также пытался просто использовать внутренние элементы и копировать их в другую форму (не зная, как передать идентификатор от дочернего элемента родительскому), но я получил бесконечный цикл при переходе к родительской форме.

Заранее спасибо!


person Michail Michailidis    schedule 28.08.2017    source источник
comment
Посмотрите документы для Redux Form. Если это вообще возможно, вам придется написать для этого специальную форму. Формы AOR по умолчанию не могут справиться с этой функциональностью.   -  person kunal pareek    schedule 02.09.2017