Пользовательский атрибут изображения клиента Magento 2 может быть сохранен только из административного интерфейса, но не из внешнего интерфейса. - PullRequest
0 голосов
/ 25 марта 2020
  • Привет всем, я создал пользовательский атрибут пользовательского изображения.
  • Изображение может быть загружено от администратора, и идея состоит в том, чтобы иметь возможность загружать изображение также из внешнего интерфейса.
  • Внутренняя часть работает, и администратор может загрузить изображение.
  • ** Когда я пытаюсь загрузить изображение со страницы внешнего интерфейса, я получаю сообщение об ошибке от базовой модели, которая назначена атрибуту изображения.

    Итак, как избежать выполнения бэкэнд-модели для атрибута, если я не загружаю изображение из бэкэнда?

Пользовательский атрибут изображения клиента:

    protected function installCustomerImageAttribute($setup)
{
    $customerSetup = $this->customerSetup->create(['setup' => $setup]);
    $customerEntity = $this->eavConfig->getEntityType('customer');
    $attributeSetId = $customerEntity->getDefaultAttributeSetId();
    $attributeSet = $this->attributeSet->create();
    $attributeGroupId = $attributeSet->getDefaultGroupId($attributeSetId);

    $customerSetup->addAttribute(
        Customer::ENTITY,
        'profile_image',
        [
            'type' => 'varchar',
            'label' => 'Customer Profile Image',
            'backend' => 'Iways\Customer\Model\Customer\Attribute\Backend\File',
            'input' => 'text',
            'required' => false,
            'visible' => true,
            'user_defined' => false,
            'position' => 700,
            'system' => false,
        ]
    );

    $attribute = $customerSetup->getEavConfig()->getAttribute(Customer::ENTITY, 'profile_image');
    $attribute->addData([
        'attribute_set_id' => $attributeSetId,
        'attribute_group_id' => $attributeGroupId,
        'used_in_forms' => ['adminhtml_customer']
    ]);

    $attribute->save();
    $setup->endSetup();
}

Итак, еще раз, атрибут изображения клиента работает, когда вы загружаете изображение на сервер в администраторе, и изображение отображается и успешно сохраняется для клиента. Когда я загружаю изображение в веб-интерфейс и пытаюсь сохранить значение для пользовательского атрибута, выполняется метод бэкэнд-модели из атрибута (beforeSave).

...