顧客オブジェクトのメソッド名を動的に構築する
-
13-12-2019 - |
質問
私は 4 つのストアを持つ Magento Web サイトを持っています。各顧客ごとに各店舗ごとに異なる締め切り時間が割り当てられます。
ユーザーは一度に 1 つのストアからのみ製品を追加できるように制限されています。ユーザーがページをチェックアウトしに来たとき、製品を追加したストアの締め切り時間を取得する必要があります。
ストアコードを取得することができました。
閉店時間別の顧客属性は以下の通り
`delivery_cutoff_time_abc` // here abc is the store code
`delivery_cutoff_time_def` // here def is the store code
`delivery_cutoff_time_ghi` // here ghi is the store code
`delivery_cutoff_time_jkl` // here jkl is the store code
カートに追加された製品に基づいて、ストアコードを取得しました。abc
または def
とか、ぐらい。
次に、以下のように顧客オブジェクトから値を取得する必要があります
$customer = Mage::getSingleton('customer/session')->getCustomer();
$customer->getDeliveryCutoffTimeAbc();
これを行うために、以下のようなストアコードがあります
$storeCode = "abc";
以下のように動的を使用する必要があります
$customer->getDeliveryCutoffTime.$storeCode();
値が得られません。どうすれば動的にできるのでしょうか?
解決
試す
$storeCode = ucfirst("abc");
$function = "getDeliveryCutoffTime".$storeCode;
$customer->$function();
他のヒント
PHP では、これは次のように行うこともできます。
$storeCode = "abc";
$customer->{"getDeliveryCutoffTime" . ucfirst($storeCode)}();
これらの Magento の「マジック」ゲッター メソッドは、次のメソッドを呼び出します。 getData()
最終的に。それで getDeliveryCutoffTimeAbc()
に電話がかかります getData("delivery_cutoff_time_abc")
.
したがって、これをすぐに呼び出すこともできます。
$storeCode = "abc";
$customer->getData("delivery_cutoff_time_" . $storeCode);
所属していません magento.stackexchange