Question

Collections offrent un moyen pratique d'obtenir un modèle blanc - par exemple:.

$quote->getItemsCollection()->getNewEmptyItem();

Y at-il des moyens de le faire à partir d'un modèle existant sans avoir à appeler à la collection - autrement dit directement à partir de l'instance? Quelque chose comme ceci:

$product = Mage::getModel('catalog/product')->load(43);
$productNew = $product->getNewEmptyItem();

Je ne réalise que je pourrais appeler getCollection() sur le premier produit -. Ne sais pas si cela a certains frais généraux

Modifier

Il est évident que $product = Mage::getModel('catalog/product'); produit le résultat souhaité. De toute évidence . Ce que je suis à la recherche est un moyen d'obtenir un objet vide sans reinstantiating le modèle.

Peut-être que je juste besoin de passer à l'utilisation des singletons pour soulager mon esprit.

Était-ce utile?

La solution

Vous pouvez utiliser reset ();

Mage::getModel('catalog/product')->load(1)->reset();

qui appelle _clearData, si vous vérifiez dans le Mage_Catalog_Model_Product vous pouvez voir que cette fonction remet à zéro toutes les variables.

Autres conseils

La méthode reset() est disponible pour Mage_Catalog_Model_Product mais dans son ensemble, ce n'est pas disponible.

Vous pouvez ajouter une méthode comme ceci:

public function reset() {
    return new self();
}

Cependant, vous ne peut pas puis appelez:

$modelInstance->reset();

Vous devrait appeler:

$modelInstance = $modelInstance->reset();

En raison de cela, à mon avis, avoir votre propre méthode de reset() va conduire à une mauvaise utilisation, et / ou peut confondre d'autres développeurs. Vous êtes mieux de faire quelque chose comme ceci:

$modelInstance = new $modelInstance;

Est-ce fonctionne pas via la fonction clearInstance sur Mage_Core_Model_Abstract. Cela semble des références et des données claires, plus il déclenche également un événement:

Mage::dispatchEvent($this->_eventPrefix.'_clear', $this->_getEventData());

Peut-être que je manque quelque chose ici cependant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top