2009-12-09 81 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?或取消/刪除之前的屬性保存在控制器?我應該添加get/set方法對模型?

回答

3

最後,我推翻在我的自定義模型SetData方法。

我沒有找到一些good resources試圖覆蓋/過載(這兩個術語是常見的)控制器/路由器。

也注意到 -

'frontend_input'=>'boolean', 

應該

'frontend_input'=>'checkbox', 
+1

這可能在舊版本的Magento中是成立的,但目前(Magento 1.8),'checkbox'不是有效的fronted_input類型,但布爾值是 – 2013-12-20 18:02:24

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值被髮送時,它會佔用最後一個。不同的服務器端語言可能會有不同的處理方式