- Привет всем, я создал пользовательский атрибут пользовательского изображения.
- Изображение может быть загружено от администратора, и идея состоит в том, чтобы иметь возможность загружать изображение также из внешнего интерфейса.
- Внутренняя часть работает, и администратор может загрузить изображение.
** Когда я пытаюсь загрузить изображение со страницы внешнего интерфейса, я получаю сообщение об ошибке от базовой модели, которая назначена атрибуту изображения.
Итак, как избежать выполнения бэкэнд-модели для атрибута, если я не загружаю изображение из бэкэнда?
Пользовательский атрибут изображения клиента:
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).