2

プログラムで顧客の住所を削除する必要がありますが、それを行う機能が見つかりませんでした。

 $recordedAddresses = array();
    foreach ($customer->getAddresses() as $address)
     {
        $recordedAddresses = $address->toArray();
     }

上に示したように、アドレスのコレクションはすでに取得しています。IDで削除したいだけです。不思議なことに、例は見つかりませんでしたが、APIを使用しています。誰かがそれで手をかざすことができますか?

4

2 に答える 2

5

Mage_Customer_AddressControllerコントローラークラスとdeleteAction()メソッドを見てください。基本的に、必要なのはIDでアドレスをロードすることだけです。

$address = Mage::getModel('customer/address')->load($addressId);

そしてそれを削除します:

$address->delete();

delete()は、すべてのモデルに対して実行できる標準的な方法です(を参照Mage_Core_Model_Abstract)。_isDeletedフラグを設定しsave()て、同じ結果になる呼び出しを行うこともできます。

于 2013-03-11T15:37:19.393 に答える
5

$address->delete()どういうわけか、私の場合、Magentoは使用後に空のエンティティを保持します。アカウントに空のアドレスがあり、この方法を使用するときに管理者が顧客フォームを保存できませんでした。

ユーザーアカウントから実際にアドレスを削除する方法は、保護された$_isDeletedフラグをtrueに変更することだけです。

$address = Mage::getModel('customer/address')->load($addressId); $address->isDeleted(true);

同じMagentoの動作につまずく人にとって、時間が節約されることを願っています。

于 2015-12-21T20:58:42.700 に答える