Construya dinámicamente un nombre de método para el objeto del cliente
-
13-12-2019 - |
Pregunta
Tengo un sitio web Magento con cuatro tiendas.Para cada cliente se asignará una hora límite diferente para cada tienda.
El usuario está restringido a agregar productos de una sola tienda a la vez.Cuando el usuario visita la página, tengo que obtener la hora límite de la tienda desde la que agregó el producto.
Logré obtener el código de la tienda.
Los atributos del cliente para la hora límite de la tienda son los siguientes
`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
Según los productos agregados al carrito, obtuve el código de la tienda, ya seaabc
o def
más o menos.
Ahora tengo que obtener el valor del objeto del cliente como se muestra a continuación.
$customer = Mage::getSingleton('customer/session')->getCustomer();
$customer->getDeliveryCutoffTimeAbc();
Para hacer esto tengo el código de tienda como se muestra a continuación
$storeCode = "abc";
Tengo que usar dinámica como se muestra a continuación.
$customer->getDeliveryCutoffTime.$storeCode();
No obtiene el valor.¿Cómo puedo hacerlo dinámico?
Solución
Intentar
$storeCode = ucfirst("abc");
$function = "getDeliveryCutoffTime".$storeCode;
$customer->$function();
Otros consejos
En PHP esto también se puede hacer así:
$storeCode = "abc";
$customer->{"getDeliveryCutoffTime" . ucfirst($storeCode)}();
Estos métodos captadores "mágicos" de Magento llaman al método getData()
eventualmente.Entonces getDeliveryCutoffTimeAbc()
resultará en una llamada a getData("delivery_cutoff_time_abc")
.
Entonces también puedes llamar a esto de inmediato:
$storeCode = "abc";
$customer->getData("delivery_cutoff_time_" . $storeCode);