Costruisci un nome del metodo per l'oggetto cliente dinamicamente
-
13-12-2019 - |
Domanda
Ho un sito web magento con quattro negozi.Per ogni cliente verranno assegnati diversi tempo di taglio per ogni negozio.
L'utente è limitato per aggiungere il prodotto da un solo negozio alla volta.Quando l'utente viene a controllare la pagina Devo ottenere il tempo tagliato per il negozio da cui ha aggiunto il prodotto.
Sono riuscito a ottenere il codice del negozio.
Attributi del cliente per il tempo di tagliare il tempo sono come sotto
`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
.
Sulla base dei prodotti aggiunti al carrello Ho ottenuto il codice del negozio, sia che sia in linguaggioabc
o def
o giù di lì.
Ora devo ottenere il valore dall'oggetto cliente come sotto
$customer = Mage::getSingleton('customer/session')->getCustomer();
$customer->getDeliveryCutoffTimeAbc();
.
Per fare ciò ho il codice del negozio come sotto
$storeCode = "abc";
Devo usare dinamico come sotto
$customer->getDeliveryCutoffTime.$storeCode();
.
Non ottiene il valore.Come posso renderlo dinamico?
Soluzione
Prova
$storeCode = ucfirst("abc");
$function = "getDeliveryCutoffTime".$storeCode;
$customer->$function();
. Altri suggerimenti
In PHP, questo può anche essere fatto come questo:
$storeCode = "abc";
$customer->{"getDeliveryCutoffTime" . ucfirst($storeCode)}();
.
Questi metodi Magento "Magic" Gettter chiamano la fine del metodo getData()
.Quindi getDeliveryCutoffTimeAbc()
comporterà una chiamata a getData("delivery_cutoff_time_abc")
.
Quindi puoi anche chiamarlo subito:
$storeCode = "abc";
$customer->getData("delivery_cutoff_time_" . $storeCode);
.