Apostrophe CMS не может получить изображения в JS beforeSave, но может в шаблонах HTML - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть проблема.Вот поле схемы, определяющее поле изображения и код в index.js для модуля частей

....
{
    name: 'icon',
    label: 'Icon for Title',
    type: 'singleton',
    widgetType: 'apostrophe-images',
    image:true,
    options: {
      aspectRatio: [1, 1],
      minSize: [32, 32],
      limit: 1,
      size: 'iconSize'
    }
  },
  .....

и код конструктора

....
construct: function (self, options) {

self.beforeSave = function(req, piece, options, callback) {
var d=piece;
var icon=undefined;

console.log('piece log ',d.icon);// piece log  { items:
[ { by: 'id',
   hideTitle: true,
   hideCredits: true,
   hideDescription: true,
   _id: 'w211720719732099649',
   pieceIds: [Array],
   relationships: [Object],
   type: 'apostrophe-images' } ],
   type: 'area' }
   Template warning: Impossible to retrieve the attachment url since it is      missing, a default icon has been set. Please fix this ASAP!

   if (d.icon) {
    var image =self.apos.images.first(d.icon);

    icon = self.apos.attachments.url(image, { size: 'iconSize' });
  }
  console.log('icon log', icon);// icon log /modules/apostrophe-attachments/img/missing-icon.svg

app.js имеетразмер изображения указан правильно

И все же в файле шаблона работает тот же код

{% set icon = apos.images.first(data.widget.icon) %}
{% if icon %}
  <img class="event-icon" src="{{ apos.attachments.url(icon) }}" alt="{{ data.widget.navName }}"
  style="{% if apos.attachments.hasFocalPoint(icon) %}background-position: {{ apos.attachments.focalPointToBackgroundPosition(image) }};{% endif %}">
  {% endif %}

Я не могу использовать шаблон, так как у меня более 60 полей, определенных в схеме, которыесоздает целую связку HTML, поэтому мой лучший вариант - создать HTML в JS и обновить поле схемы с помощью кода, который затем выводится в шаблон.Я даже пытался после сохранения, думая, что это была асинхронная проблема на изображении, и это дает те же результаты.

...