Bug fix: incorrect combine shipping dimensions features.#313
Bug fix: incorrect combine shipping dimensions features.#313Shevsky wants to merge 2 commits intowebasyst:devfrom
Conversation
| if ($dimensions = self::getShopSettings('shipping_dimensions')) { | ||
| $dimensions = preg_split('@\D+@', $dimensions); | ||
| $features = $feature_model->getByField((count($dimensions) == 1) ? 'parent_id' : 'id', $dimensions, true); | ||
| $features = $feature_model->getByField((count($dimensions) == 1) ? 'parent_id' : 'id', $dimensions, 'id'); |
There was a problem hiding this comment.
Нужно сохранить в ключах массива id характеристики, чтобы в цикле ниже найти информацию о характеристике по ее id.
| $map += array_combine($dimension_fields, array_values($features)); | ||
| foreach($dimension_fields as $dimension_field_key => $dimension_field) { | ||
| $map[$dimension_field] = $features[$dimensions[$dimension_field_key]]; | ||
| } |
There was a problem hiding this comment.
Для понимания что было раньше и как сейчас будет работать.
$dimensions = [ 94, 92, 93 ]
$dimension_fields = [ 'height', 'width', 'length' ]
До исправления:
$map = [ 'height' => [ 'id' => 92, ... ], 'width' => [ 'id' => 93, ... ], 'length' => [ 'id' => 94, ... ] ]
После:
$map = [ 'height' => [ 'id' => 94, ... ], 'width' => [ 'id' => 92, ... ], 'length' => [ 'id' => 93, ... ] ]
|
Вы видели, чтобы у пользователей возникали какие-то проблемы в работе интернет-магазина в связи с этой ошибкой? |
|
Видел и меня замучил уже один приобретатель моего плагина package с этой проблемой. |
В $features попадают характеристики в том порядке, в котором были созданы, по полю id. Когда они комбинируются с массивом $dimension_fields = [ 'height', 'width', 'length' ], они заполнятся некорректно, корректный порядок есть в $dimensions - там лежат значения id в нужном порядке [ HEIGHT_FEATURE_ID, WIDTH_FEATURE_ID, LENGTH_FEATURE_ID ].
Соответственно, нужно добавлять в $map характеристики размеров товаров именно так, как они указаны в настройках.