안녕하세요. @angus 님이 여기에 제시한 코드를 사용하고, github 저장소를 참고하여 토픽 커스텀 필드를 잘 작동시킬 수 있었습니다. 단, 컴포저의 “헤더” 영역에서 편집할 수 있도록 활성화하는 것만 제외하면요 (보통 카테고리 등을 편집할 수 있는 곳, 즉 edit-topic 커넥터 안입니다).
저장소의 이 부분에 대한 코드를 plugin.rb 파일과 다른 곳의 코드를 포함해 모두 따랐습니다. 예를 들어, 여기와 같이 connectors/edit-topic/edit-topic-custom-field-container.hbs 파일에 입력 필드를 추가했습니다:
{{#if isString}}
{{input
type="text"
value=(readonly fieldValue)
class="topic-custom-field-input large"
input=(action "onChangeField" value="target.value")
placeholder=(i18n 'topic_custom_field.placeholder' field=fieldName)
}}
{{/if}}
그리고 topic-custom-field-initializer의 코드도 다음과 같이 추가했습니다:
api.registerConnectorClass('edit-topic', 'edit-topic-custom-field-container', {
setupComponent(attrs, component) {
const model = attrs.model;
let props = {
fieldName: fieldName,
fieldValue: model.get(fieldName)
}
component.setProperties(Object.assign(props, fieldInputTypes(fieldType)));
},
actions: {
onChangeField(fieldValue) {
this.set(`buffered.${fieldName}`, fieldValue);
}
}
});
...
api.serializeOnCreate(fieldName);
api.serializeToDraft(fieldName);
api.serializeToTopic(fieldName, `topic.${fieldName}`);
하지만: 다른 저장소 코드(예: 컴포저 값에 커스텀 필드 값을 추가하는 것)는 저에게 잘 작동하고 에러도 없는데, edit-topic 커넥터 입력 필드에 입력한 값을 저장할 수 없습니다. 거기에 값을 입력하면 편집이 저장된 후 값이 사라집니다.
edit-topic 커넥터에서 값을 저장하려면 다른 추가 조치가 필요한 것일까요?