Перенос измерений


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

$this->addFieldMapping('field_productdimensions')->defaultValue(4);
$this->addFieldMapping('field_productdimensions:width')->defaultValue(1);
$this->addFieldMapping('field_productdimensions:length')->defaultValue(2);
$this->addFieldMapping('field_productdimensions:height')->defaultValue(3);
$this->addFieldMapping('field_productdimensions:unit','cm');

Вышеизложенное не содержало никаких данных. Я также пробовал использовать значения в prepareRow следующим образом:

    $current_row->dimensions = array(
      'length' => 1,
      'width' => 2,
      'height' => 3,
      'unit' => 'cm'
    );

Все остальные поля вставлены правильно. Есть идеи, что я делаю не так?

 3
Author: NickO, 2015-04-22

2 answers

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

    $this->addFieldMapping('field_productdimensions','width');
    $this->addFieldMapping('field_productdimensions:width','length')->defaultValue(null);
    $this->addFieldMapping('field_productdimensions:length','length')->defaultValue(null);
    $this->addFieldMapping('field_productdimensions:height','height')->defaultValue(null);
    $this->addFieldMapping('field_productdimensions:unit','length_units');
 1
Author: NickO, 2015-04-27 11:40:00

Поскольку я боролся с этой проблемой сегодня, вам действительно нужно исключить сопоставление длины, иначе ваша миграция завершится неудачей, и все ваши поля будут пустыми.

$this->addFieldMapping('field_productdimensions','length')->defaultValue(null);
$this->addFieldMapping('field_productdimensions:width','width')->defaultValue(null);
$this->addFieldMapping('field_productdimensions:height','height')->defaultValue(null);
$this->addFieldMapping('field_productdimensions:unit','length_units')->defaultValue('mm');

Также обратите внимание, что значение, которое вы пытаетесь ввести, является строго целым числом. Значение с пробелом за ним не будет работать.

 0
Author: Bram, 2016-01-06 14:51:27