Magento и снятие индивидуального логического атрибута
-
18-09-2019 - |
Вопрос
Я добавил атрибут к объекту адреса клиента. Код настройки атрибутов следующим образом-
'entity_type_id'=>$customer_address_type_id,
'attribute_code'=>'signature_required',
'backend_type'=>'int',
'frontend_input'=>'boolean',
'frontend_label' => 'Signature required',
'is_global' => '1',
'is_visible' => '1',
'is_required' => '0',
'is_user_defined' => '0',
У меня тогда -
- Добавлен атрибут в модель entity setup.php
- Добавлено поле HTML в форме редактирования
Сейчас я сохранен атрибут в базе данных при проверке флажести. Тем не менее, это не является нерешенным, когда флажок не контролирована (я предполагаю, что из-за ввода флажки не является «post» ed, если не контролировано.
Как лучше всего снять это? Должен ли я добавить значение по умолчанию 0? Или не вытекать/удалить атрибут перед сохранением в контроллере? Стоит ли добавить методы Get/Set в модель?
Решение 2
В конце концов, я перевернул метод SetData в моей пользовательской модели.
Я нашел немного Хорошие ресурсы При попытке переопределить/перегружать (оба термина являются общими) контроллеры/маршрутизаторы.
Также следует отметить -
'frontend_input'=>'boolean',
должно быть
'frontend_input'=>'checkbox',
Другие советы
У меня была похожая проблема сегодня, я обнаружил, что различные руководства утомительны и обошли ее, изменяя «SELECT» вместо «флажки» и установив «источник» на eav/entity_attribute_source_boolean
что дает простое раскрытие «да»/«нет» и правильно сохраняет без модификации.
Вы правы, проблема в том, что неконтролируемые флажки не отправляются по запросу.
Вы можете исправить это, поместив ввод скрытой формы со значением «0» до того, как ваш флажок
<input type='hidden' name='my_checkbox' value='0'>
<input type='checkbox' name='my_checkbox' value='1'>
Теперь, если флажок проверен, он отправит значение «1», если он не контролируется, он отправит значение «0».
Я должен отметить, что это верно только в PHP, потому что когда отправляются два идентичных значения POST, он занимает последнее. Различные языки на стороне сервера могут справиться с этим по -разному