Я сейчас работаю над проектом и использую 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>
);
}
Но как мне реализовать сохранение данных клиента?В настоящий момент кнопка сохранения ничего не делает, может быть потому, что просто не знает, что делать.Должен ли я создать какую-то пользовательскую функцию, оставив вызов конечной точке клиента?Как связать эту функцию с кнопкой сохранения?