Получить новый пустой элемент на методе модели

magento.stackexchange https://magento.stackexchange.com/questions/1151

  •  16-10-2019
  •  | 
  •  

Вопрос

Коллекции предоставляют удобный способ получить пустую модель - например:

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

Есть ли какие -либо средства для этого из существующей модели без необходимости призывать к коллекции - другими словами непосредственно из экземпляра? Что-то вроде этого:

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

Я понимаю, что могу позвонить getCollection() Сначала на продукте - не уверен, есть ли это накладные расходы.

Редактировать:

Очевидно $product = Mage::getModel('catalog/product'); дает желаемый результат. Очевидно. Анкет То, что я ищу, является средством получения пустого объекта без переоценки модели.

Возможно, мне просто нужно переключиться на использование синглтонов, чтобы облегчить мой разум.

Это было полезно?

Решение

Вы можете использовать Reset ();

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

Это вызывает _cleardata, если вы зарегистрируетесь в mage_catalog_model_product, вы можете увидеть, что эта функция сбрасывает все переменные.

Другие советы

А reset() Метод доступен для Mage_Catalog_Model_Product Но в целом это недоступно.

Вы можете добавить такой метод, как это:

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

Однако вы не может Затем позвоните:

$modelInstance->reset();

Вы должны были бы позвонить:

$modelInstance = $modelInstance->reset();

Из -за этого, на мой взгляд, иметь свой собственный reset() Метод приведет к неправильному использованию и/или может запутать других разработчиков. Вам лучше сделать что -то подобное:

$modelInstance = new $modelInstance;

Разве это не работает через clearInstance функционировать на Mage_Core_Model_Abstract. Анкет Похоже, это очищает ссылки и данные, плюс это также запускает событие:

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

Может быть, я что -то здесь упускаю.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top