Magento和取消设置自定义布尔属性

Magento和取消设置自定义布尔属性,magento,attributes,boolean,street-address,Magento,Attributes,Boolean,Street Address,我已经为客户地址实体添加了一个属性。属性设置代码如下所示- '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

我已经为客户地址实体添加了一个属性。属性设置代码如下所示-

'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',
那我有-

  • 向model\entity\setup.php添加了属性
  • 在编辑表单上添加了一个HTML字段
选中复选框后,我现在将属性保存到数据库中。然而,当复选框未选中时,它并没有被取消设置(我猜是因为复选框输入未被“后”置,如果未选中)


取消选中此项的最佳方法是什么?我应该在保存到控制器之前添加默认值0吗?还是取消设置/删除属性?我应该向模型添加get/set方法吗?

最后,我在自定义模型中覆盖了setData方法

我确实发现了一些关于试图覆盖/重载(这两个术语都很常见)控制器/路由器的内容

同样值得注意的是—

'frontend_input'=>'boolean',
应该是

'frontend_input'=>'checkbox',

最后,我在自定义模型中重写了setData方法

我确实发现了一些关于试图覆盖/重载(这两个术语都很常见)控制器/路由器的内容

同样值得注意的是—

'frontend_input'=>'boolean',
应该是

'frontend_input'=>'checkbox',

今天我遇到了一个类似的问题,发现各种指南都很乏味,并通过使用“选择”而不是“复选框”来解决它,并将“源”设置为
eav/entity\u attribute\u source\u boolean
给出了一个简单的“是”/“否”下拉菜单,无需修改即可正确保存。

我今天遇到了类似的问题,发现各种指南都很枯燥,并通过使用“选择”而不是“复选框”进行更改,并将“源”设置为
eav/entity\u attribute\u source\u boolean
给出了简单的“是”/“否”下拉列表,无需修改即可正确保存。

您是对的,问题是POST请求中没有发送未选中的复选框

您可以通过在复选框前放置一个值为“0”的隐藏表单输入来修复此问题,如下所示:

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

现在,如果选中该复选框,它将通过值“1”发送,如果未选中,它将发送值“0”


我应该注意,这仅在PHP中是正确的,因为当发送两个相同的POST值时,需要最后一个值。不同的服务器端语言可能会以不同的方式处理此问题

您是对的,问题是在POST请求中不会发送未选中的复选框

您可以通过在复选框前放置一个值为“0”的隐藏表单输入来修复此问题,如下所示:

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

现在,如果选中该复选框,它将通过值“1”发送,如果未选中,它将发送值“0”


我应该注意,这仅在PHP中是正确的,因为当发送两个相同的POST值时,需要最后一个值。不同的服务器端语言可能会以不同的方式处理此问题

这可能在旧版本的Magento中是正确的,但目前(Magento 1.8),“checkbox”不是有效的前置_输入类型,但布尔值在旧版本的Magento中可能是正确的,但当前(Magento 1.8),“checkbox”不是有效的前置_输入类型,但布尔值为