Magento2 сохранить новый атрибут адреса в кассе - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь сохранить геолокацию вместе с адресом клиента.

Я добавил Let & Lng, используя скрипт установки

    $customerSetup->addAttribute('customer_address', 'latitude', [
        'type' => 'varchar',
        'label' => 'Latitude',
        'input' => 'text',
        'required' => false,
        'visible' => true,
        'visible_on_front' => true,
        'user_defined' => false,
        'sort_order' => 43,
        'position' => 43,
        'system' => 0,
    ]);

    $attributeLat = $customerSetup->getEavConfig()->getAttribute('customer_address', 'latitude')
        ->addData([
            'attribute_set_id' => $attributeSetId,
            'attribute_group_id' => $attributeGroupId,
            'used_in_forms' => ['adminhtml_customer_address', 'customer_address_edit', 'customer_register_address','customer_address'],
        ]);
    $attributeLat->save();
    //latitude - End

    $customerSetup->addAttribute('customer_address', 'longitude', [
        'type' => 'varchar',
        'label' => 'Longitude',
        'input' => 'text',
        'required' => false,
        'visible' => true,
        'visible_on_front' => true,
        'user_defined' => false,
        'sort_order' => 43,
        'position' => 43,
        'system' => 0,
    ]);

    $attributeLng = $customerSetup->getEavConfig()->getAttribute('customer_address', 'longitude')
        ->addData([
            'attribute_set_id' => $attributeSetId,
            'attribute_group_id' => $attributeGroupId,
            'used_in_forms' => ['adminhtml_customer_address', 'customer_address_edit', 'customer_register_address','customer_address'],
        ]);
    $attributeLng->save();
    //longitude - End}

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

В полях формы страницы оформления заказадля "широты" и "долготы" появляются.Но значения не сохраняются вместе с адресом клиента.

Я использую Magento CE 2.2.3

Любая помощь будет принята с благодарностью.

Спасибо

1 Ответ

0 голосов
/ 13 мая 2019
  • Вам необходимо добавить файл etc / extension_attributes.xml для Magento \ Customer \ Api \ Data \ AddressInterface:
<extension_attributes for="Magento\Customer\Api\Data\AddressInterface">
        <attribute code="longitude" type="string" />
    </extension_attributes>
  • Добавить файл etc / fieldset.xml:
 <fieldset id="sales_convert_quote_address">
            <field name="longitude">
                <aspect name="to_customer_address" />
                <aspect name="to_order_address" />
            </field>
        </fieldset>
  • Добавить плагин в di.xml для Magento \ Customer \ Model \ Address, где вам нужно сохранить свой пользовательский атрибут в функции beforeUpdateData
<type name="Magento\Customer\Model\Address"> 
        <plugin disabled="false" name="vendor_plugin_quote_model_address" sortOrder="10" 
        type="Vendor\Module\Plugin\Customer\Model\Address"/>
    </type>
  public function beforeUpdateData(
        \Magento\Customer\Model\Address $subject,
        \Magento\Customer\Api\Data\AddressInterface $address
    )

И тогда вы сможете увидеть свой атрибут, сохраненный в адресе клиента.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...