1

顧客アドレスエンティティに属性を追加しました。属性設定コードは以下の通りです-

'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メソッドを追加する必要がありますか?

4

3 に答える 3

4

eav/entity_attribute_source_boolean今日も同様の問題があり、さまざまなガイドが面倒であることがわかり、「チェックボックス」の代わりに「選択」を使用して変更し、単純な「はい」/「いいえ」ドロップを与える「ソース」を設定することで回避しました-down 変更せずに正しく保存します。

于 2011-01-14T23:48:29.960 に答える
3

最後に、カスタム モデルの setData メソッドをオーバーライドしました。

コントローラー/ルーターのオーバーライド/オーバーロード (両方の用語が一般的です) を試みることに関するいくつかの優れたリソースを見つけました。

また、注目すべき -

'frontend_input'=>'boolean',

する必要があります

'frontend_input'=>'checkbox',
于 2009-12-11T05:36:54.437 に答える
0

そうです、問題は、チェックされていないチェックボックスが POST リクエストで送信されないことです。

次のように、チェックボックスの前に値が「0」の非表示のフォーム入力を配置することで、これを修正できます。

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

チェックボックスがチェックされている場合は値「1」が送信され、チェックされていない場合は値「0」が送信されます。

2 つの同一の POST 値が送信されると、最後の値が取得されるため、これは PHP でのみ当てはまることに注意してください。サーバー側の言語が異なると、これを異なる方法で処理する場合があります

于 2013-12-20T18:24:13.543 に答える