Strapi CMS: добавить вычисляемое поле - PullRequest
0 голосов
/ 13 февраля 2020

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

Я искал в жизненном цикле модели, но я не нашел ни одной детали относительно изменений ввода, только модель.

Я пробовал цикл beforeSave, но он, очевидно, запускается после того, как пользователь нажимает кнопку Сохранить, но согласно его собственная документация должна работать:

beforeSave: async (model, attrs, options) => {
    model.set('FinalCost', attrs.budget- attrs.cost);
}

Это код не работает, но я пытаюсь показать, как должно выглядеть поле finalCost после заполнения cost и budget (в реальном времени). Я также пытался attrs.FinalCost = attrs.budget - attrs.cost, но ничего не меняется.

Есть какие-нибудь подсказки? Заранее спасибо.

Редактировать:

Я должен был убедиться, что поле budget было правдой, прежде чем установить FinalCost:

beforeSave: async (model, attrs, options) => {
    if (attrs.FinalCost) {
       attrs.FinalCost = attrs.budget- attrs.cost;
    }
}

Но это не отвечает на мои Первая проблема, что это должно работать в режиме реального времени и бот, пока я не нажму кнопку «Сохранить».

1 Ответ

0 голосов
/ 13 февраля 2020

вот некоторые ресурсы, которые вам помогут.

Функция жизненных циклов модели вызывается при создании записи / update /...

Так что в вашем случае FinalCost является атрибут вашей модели и его значение будут обновляться и сохраняться при каждом обновлении вашей записи.

Это та же система, что и в данном руководстве - https://strapi.io/documentation/3.0.0-beta.x/guides/slug.html#create -атрибуты

Если вы не хотите сохранять значение в поле, вам придется обновить API-контроллер для вычисления значения на лету.

Что сделано в этом руководстве - https://strapi.io/documentation/3.0.0-beta.x/guides/custom-data-response.html

...