Каково использование наблюдателя.php в модуле magento

На самом деле я сейчас работаю в magento над разработкой модуля для проверки того, используется код ваучера или нет. Детали сохраняются в новой таблице. В моем config.xml я указал страницу наблюдателя для получения сведений из таблицы БД. Но я не знаю точного использования страницы наблюдателя в 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
public function 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('ядро/сессия')->addSuccess($this-›__('Купон уже использован')); } else { Mage::getSingleton('core/session')-›addSuccess($this-›__('‹›Купон еще не использован')); }}}   -  person SIBI A    schedule 10.10.2014


Ответы (2)


Observer.php — это файл класса модели, как и все модели, он также может называться в любом месте, где нам нужна его функция.

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

Я прошел через вашу ошибку и код. Кажется, код не получает значение кода купона. Пожалуйста, проверьте, есть ли какое-либо значение в $coupon_code.

Это может быть проблемой.

Спасибо.

person Akash Pius    schedule 24.09.2014
comment
Я присвоил $coupon_code фиктивное значение 111. но по-прежнему показывает журнал ошибок. Журнал ошибок находится здесь 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 \ Оператор\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