Obtener nuevo elemento vacío en el método de modelo
-
16-10-2019 - |
Pregunta
Colecciones proporcionan un medio práctico de obtener un modelo en blanco - por ejemplo:.
$quote->getItemsCollection()->getNewEmptyItem();
¿Hay alguna manera de hacerlo a partir de un modelo existente sin tener que llamar para la recogida - en otras palabras directamente de la instancia? Algo como esto:
$product = Mage::getModel('catalog/product')->load(43);
$productNew = $product->getNewEmptyItem();
Me dan cuenta de que podría llamar getCollection()
en el producto de la primera -. No estoy seguro si esto tiene algo de sobrecarga
Editar
Obviamente $product = Mage::getModel('catalog/product');
produce el resultado deseado. Obviamente . Lo que estoy buscando es un medio de conseguir un objeto blanco sin reinstantiating el modelo.
Tal vez sólo hay que cambiar a usar únicos para aliviar mi mente.
Solución
Se puede usar reset ();
Mage::getModel('catalog/product')->load(1)->reset();
que llama _clearData, si marca en el Mage_Catalog_Model_Product se puede ver que esta función restablece todas las variables.
Otros consejos
El método reset()
está disponible para Mage_Catalog_Model_Product
sino como un todo, esto no está disponible.
Se podría añadir un método como este:
public function reset() {
return new self();
}
Sin embargo, no pueden a continuación, llamar a:
$modelInstance->reset();
Se tendría que llamar:
$modelInstance = $modelInstance->reset();
Debido a esto, en mi opinión, tener su propio método reset()
va a conducir a un mal uso, y / o puede confundir a otros desarrolladores. Usted es mejor hacer algo como esto:
$modelInstance = new $modelInstance;
¿Esto no funciona a través de la función clearInstance
en Mage_Core_Model_Abstract
. Esto parece referencias y datos claros además de que también desencadena un evento:
Mage::dispatchEvent($this->_eventPrefix.'_clear', $this->_getEventData());
Tal vez me estoy perdiendo algo aquí, sin embargo.