Как сохранить данные формы в AOR без использования компонента Resource? - PullRequest
0 голосов
/ 04 июня 2018

Я сейчас работаю над проектом и использую admin-on-rest.Компонент Resource до сих пор был очень полезен, настолько легко создавать представления для просмотра, просмотра, создания и редактирования элементов.Но возникают ситуации, когда нет необходимости в компоненте Resource и сопоставлении конечной точки API с определенными URL-адресами в AOR.

В этом проекте есть страница настроек, например, для измененияязык сайта.Теперь я также хотел бы добавить туда форму для редактирования данных клиента.В документации AOR есть примеры, где компонент SimpleForm находится внутри компонента Edit, но я не могу сделать это так, потому что его использование приводит к ошибкам.Я пока не знаю точную причину этих ошибок, но я предполагаю, что это связано с тем, что я не использую компонент Resource, который бы отображал правильную конечную точку API для компонента Edit.

Сначала у меня возникла проблема с тем, как получить данные о клиенте в компоненте SimpleForm без использования компонента Resource.Я решил это, добавив вызов rest к методу componentDidMount и установив ответ на состояние.Используя состояние, компонент SimpleForm может отображать правильные данные клиента.SimpleForm по умолчанию предоставляет кнопку «Сохранить», но я также обнаружил, что могу переопределить это с помощью панели инструментов.

Мой код на данный момент:

componentDidMount() {
    restClient("GET_ONE", 'customers', {pagination: { page: 1, perPage: 5 }, sort: { field: 'name', order: 'ASC' }, id: 5})
        .then(response => {
            this.setState({customerData: response.data});
        }
    });
}

render() {
    const FormToolbar = props => <Toolbar>
        <SaveButton label="Save" />
    </Toolbar>;

    return (
        <Card>
            <ViewTitle title="Edit customer" />

            <SimpleForm record={this.state.customerData} toolbar={<FormToolbar />} >
                <TextInput source="name" />
                <TextInput source="email" />
                <TextInput source="street"  />
                <TextInput source="postal_code" />
                <TextInput source="city" />
            </SimpleForm>
        </Card>
    );
}

Но как мне реализовать сохранение данных клиента?В настоящий момент кнопка сохранения ничего не делает, может быть потому, что просто не знает, что делать.Должен ли я создать какую-то пользовательскую функцию, оставив вызов конечной точке клиента?Как связать эту функцию с кнопкой сохранения?

1 Ответ

0 голосов
/ 04 июня 2018

Не используйте компонентыact-admin для чего-либо, кроме ресурсов.Это не набор UI.В вашем случае вы должны использовать простой старый material-ui и самостоятельно создавать формы (проверка, отправка с помощью fetch и т. Д.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...