Каква е употребата на observer.php в модул на magento

Всъщност сега работя в magento за разработване на модул за проверка на използвания код на ваучер или не. Подробностите се съхраняват в нова таблица. В моя config.xml посочих страницата за наблюдение за извличане на подробностите от db таблицата. Но не знам точното използване на страницата за наблюдател в Magento. Мога ли да използвам страница за наблюдение за тази употреба.

Но продължава до грешка Проверих лог файла

кое е

a:5:{i:0;s:203:"SQLSTATE[42000]: Синтактична грешка или нарушение на достъпа: 1064 Имате грешка във вашия SQL синтаксис; проверете ръководството, което съответства на вашата версия на MySQL сървър за правилния синтаксис за използвайте близо до '=' на ред 1";i:1;s:1677:"#0 C:\wamp\www\Mymagento\lib\Varien\Db\Statement\Pdo\Mysql.php(110): Zend_Db_Statement_Pdo-> _изпълни (масив)

Моят файл observer.php също е показан по-долу

клас Module_Voucher_Model_Observer {

 public function __contruct()
    {
        $coupon_code = trim(Mage::getSingleton("core/session")->getData("coupon_code"));
    }


public function getresultofVoucher($coupon_code)
{

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

$readConnection = $resource->getConnection('core_read');

$table = "voucher_code_status_table";

$query = 'SELECT * FROM ' . $table. 'WHERE value='.$coupon_code;

$results = $readConnection->fetchAll($query);

    return $results;
}

}

Моля, помогнете каква е грешката на mysql тук. Моля, помогнете възможно най-скоро

Благодаря предварително


person SIBI A    schedule 24.09.2014    source източник
comment
е възможно да извикам тази функция в моята страница indexController. Скриптът indexController е показан по-долу   -  person SIBI A    schedule 10.10.2014
comment
публична функция indexAction() { $this-›loadLayout(); $ObjModel = нов Module_Voucher_Model_Observer(); $voucherResult = $ObjModel-›getresultofVoucher($coupon_code); if($voucherResult!= || (!empty($voucherResult)) && $this-›getRequest()-›getParam('coupon_code')!=) { foreach($voucherResult as $Result) { $output = $Result ['стойност']; } if($output!='НЯМА НАМЕРЕНИ СЪОТВЕТСТВИЯ') { Mage::getSingleton('core/session')-›addSuccess($this-›__('Coupon has already Used')); } else { Mage::getSingleton('core/session')-›addSuccess($this-›__('‹›Coupon not Used still')); }}}   -  person SIBI A    schedule 10.10.2014


Отговори (2)


Observer.php е модел клас файл, както всички модели, това също може да се нарече произволно, ако имаме нужда от неговата функция.

Обикновено използваме наблюдатели, когато използваме magento събития. В config.xml ние декларираме събития и използваме функции за наблюдение, за да обработваме събитието, когато се случи.

Прегледах вашата грешка и код. Изглежда кодът не получава стойността на кода на талона. Моля, проверете дали има някаква стойност в $coupon_code.

Това може да е проблемът.

Благодаря.

person Akash Pius    schedule 24.09.2014
comment
Присвоих фиктивна стойност 111 на $coupon_code. но все още показва регистъра на грешките. Регистърът на грешките е тук a:5:{i:0;s:206:SQLSTATE[42000]: Синтактична грешка или нарушение на достъпа: 1064 Имате грешка във вашия SQL синтаксис; проверете ръководството, което съответства на вашата версия на MySQL сървър за правилния синтаксис, който да използвате близо до '=111' на ред 1;i:1;s:1677:#0 C:\wamp\www\Mymagento\lib\Varien\Db\ Statement\Pdo\Mysql.php(110): Zend_Db_Statement_Pdo-›_execute(Array) - person SIBI A; 25.09.2014
comment
Също така използвам тази функция в моята страница на контролера $ObjModel = new Logix_Voucher_Model_Observer(); $voucherResult = $ObjModel-›getresultofVoucher($coupon_code); има ли грешка - person SIBI A; 25.09.2014

Наблюдателят е EventListener, събитията се изпращат в Magento с:

Mage::dispatchEvent('event_name', array('item' => $this));

Когато дадено събитие бъде изпратено, Magento ще провери кои наблюдатели са обвързани с него и ще извика функцията, дефинирана в конфигурацията с обект Varien_Event_Observer като неин параметър.

Вашата функция може да бъде нещо подобно:

public function getresultofVoucher(Varien_Event_Observer $observer)
{
    $item = $observer->getItem();
    // do something with it
}
person Gervs    schedule 24.09.2014