2009-12-09 3 views
1

Я добавил атрибут к объекту адреса клиента. Атрибут код установки является следующим образом-Magento и отмена настраиваемого логического атрибута

'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', 

меня тогда -

  • добавлен атрибут модели \ объект \ Setup.php
  • добавили поле HTML в форме редактирования

Теперь я получаю атрибут, сохраненный в базе данных, когда установлен флажок. Тем не менее, он не отменяется, когда флажок снят (я предполагаю, что из-за ввода флажка не является «post'-ed», если не отмечен.

Каков наилучший способ снять этот флажок? Должен ли я добавить значение по умолчанию 0? или отключенные/удалить атрибут перед сохранением в контроллере? Должно ли я добавить получить методы/набора для модели?

ответ

3

в конце концов, я отменяю метод УстановитьДанного в моей пользовательской модели.

Я нашел некоторые good resources при попытке переопределить/перегрузить (оба условия являются общими) контроллеры/маршрутизаторы.

Также обратите внимание -

'frontend_input'=>'boolean', 

должен быть

'frontend_input'=>'checkbox', 
+1

Возможно, это было верно в старой версии Magento, но в настоящее время (Magento 1.8) флажок «checkbox» не является допустимым типом fronted_input, но Boolean –

4

У меня была аналогичная проблема, сегодня, нашли различные руководства, чтобы быть утомительным и работал вокруг него путем изменения с помощью «выбрать» вместо «флажком» и установив «источник» до eav/entity_attribute_source_boolean, который дает простой «Да»/«Нет» выпадающий список и сохраняет его без изменений.

0

Вы правы, проблема в том, что отмеченные флажки не отправляются по запросу POST.

Вы можете это исправить, поставив скрытую форму ввода со значением «0» до вашего флажка, как это:

<input type='hidden' name='my_checkbox' value='0'> 
<input type='checkbox' name='my_checkbox' value='1'> 

Теперь, если флажок установлен он будет посылать через значение «1» , если он не установлен, он отправит значение «0».

Следует отметить, что это верно только в PHP, потому что, когда два идентичных значения POST отправляются, он принимает последний. Различные серверные языки могут обрабатывать это по-другому