Magentoでは、新製品を作成するときに、SKU番号を手動で入力できます。後で、このSKU番号を別の番号に変更することを決定できます。Magentoでこれを禁止する方法はありますか?SKU番号が割り当てられたら、それを常にSKUにします—代わりにユーザーが別のSKUを割り当てることを許可したくありません。
2 に答える
イベントオブザーバーとSKU属性のカスタム属性バックエンドモデルの2つのアプローチを考えることができます。後者は、より徹底的なソリューションです。
イベントオブザーバーの場合、SKUプロパティの値を比較し、変更されているかどうかを確認し、警告メッセージを表示して元の値に設定することができます。SKU属性がsaveAttribute()
などを使用して保存されない限り、これで十分です。
EAV属性バックエンドモデルで同じロジックを実行することもできます。これは、セットアップスクリプトを介して属性に簡単に割り当てることができます。ただし、SKU属性の場合、すでにバックエンドモデルMage_Catalog_Model_Product_Attribute_Backend_Sku
[リンク]があります。validate()
標準のMagentoクラスの書き換えを使用してメソッドを書き換え、必要な値の保護ロジックを追加してから、親メソッドを呼び出すのは非常に簡単です。これにより、ソリューションの移植性が大幅に向上します。
また、バックエンドモデルは、save()
またはを介して保存するかどうかに関係なく使用されsaveAttribute()
ますが、これにより、管理バックエンドを介したすべての保存がロジックに従って処理されるようになります。
私が考える最も簡単な方法の1つは、カスタムJavascriptファイルを製品の追加ページに追加し、製品IDが存在するかどうかを確認することです。これは、製品の保存後にのみ使用できます。製品IDが存在する場合は、skuフィールドを無効/非表示にします。JSのみを使用しているため、これは100%安全ではありませんが、管理者ユーザーを信頼できると想定しています。