Magento — Как получить данные из модели наблюдателя

Я пытаюсь создать простой селектор продукта. Почтовые данные из формы передаются контроллеру наблюдателю. Если я в var_dump наблюдателя, данные присутствовали, но я не могу получить к ним доступ в своем классе блоков.

Это мой контроллер:

public function indexAction() {

$session  = Mage::getSingleton('core/session');

if ($data = $this->getRequest()->getPost()) {

$data['ta'] = $this->getRequest()->getPost('torqueAction');
$data['tr'] = $this->getRequest()->getPost('torqueRequired');
$data['tm'] = $this->getRequest()->getPost('torqueMetric');

$eventdata = $data;
Mage::dispatchEvent('selector_custom_event', $eventdata);
}
$this->_redirect('prodselector/index/result');
}

public function resultAction() {
$this->loadLayout();
$this->renderLayout();
}

Это мой наблюдатель

public function observe($observer) {
$event = $observer->getEvent();

$test = $event->getData();

return $test;
}

Это мой блок:

public function getSelectedProducts() {

$arr_products = array();
$products = Mage::getModel("prodselector/observer")->observe();

return $arr_products;
}

Вот как я тестирую на phtml:

<?php var_dump($this->getSelectedProducts()); ?>

Я получаю ошибку каждый раз, когда я выполняю модуль

Fatal error: Call to a member function getEvent() on a non-object in app/code/local/Rts/Prodselector/Model/Observer.php on line 6

ПРОБЛЕМА:

Я не могу получить доступ к данным от наблюдателя через класс блока в phtml, и я не понимаю ошибку.

ВОПРОС:

В чем смысл этой ошибки?

Как мне получить доступ к данным от наблюдателя через класс блока в phtml?

Мой процесс правильный?

Можете ли вы дать мне руководство?

Спасибо!

0

Решение

Вы пытаетесь получить товары в блоке, но нет данных.

Я рекомендую лучшее решение для вас:

контроллер:

public function indexAction() {

$session  = Mage::getSingleton('core/session');

if ($data = $this->getRequest()->getPost()) {

$ta = $this->getRequest()->getPost('torqueAction');
$tr = $this->getRequest()->getPost('torqueRequired');
$tm = $this->getRequest()->getPost('torqueMetric');
$productCollection = Mage::getModel('catalog/product')->getCollection()
->addAttributeToSelect('name')
->addFieldToFilter('torque_action', $ta)
->addFieldToFilter('torque_required', $tr)
->addFieldToFilter('torque_metric', $tm);
Mage::getSingleton('core/session')->setTorqueProductCollection($productCollection);
}
$this->_redirect('prodselector/index/result');
}

public function resultAction() {
$this->loadLayout();
$this->renderLayout();
}

В блоке:

public function getSelectedProducts() {
$products = Mage::getSingleton('core/session')->getTorqueProductCollection();
return $products;
}

В шаблоне:

<?php foreach ($this->getSelectedProducts() as $product) : ?>
<?php print_r($product->getName());
<?php endforeach; ?>

Это не должно быть сделано событиями.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector