Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Событие контроллера не срабатывает


Recommended Posts

Добрый день!

 

1. Поэскпериментировав с событиями, контроллера, я пришёл к выводу, что из коробки в Opencart нет событий для конкретных action контроллера.  Например, событие controller/product/product/after существует, а событие controller/product/product/index/after не существует. Верно?

 

2. При дебаге параметров передаваемых в обработчик события я получаю 'route' => 'product/product', 'args' => NULL, 'output' => NULL. Так и должно быть? Неужели мне самому нужно парсить get и post? Например, мне нужна не случайная цифра из get запроса, а реальный id товара. В контроллере это число проверяется, но в обработчик события не попадает 

 

3. Не получается перехватить события корзины. 

 

Следующий код работает:

	'controller/product/product/after'  => array(
		'extension/module/my_module/detail_event_handler'
	),

А вот этот не работает(action-обработчик не срабатывает):

 

'controller/checkout/cart/after'  => array(
	'extension/module/my_module/add_event_handler'
)

 

В чём может быть причина?

 

Надіслати
Поділитися на інших сайтах


  • 6 months later...

@karpo518 Пока не знаю ответ на твой вопрос, по скольку только начал использовать события в ОС-3
Но благодаря тебе, не явно нашёл ответ на свой вопрос.
У меня срабатываю события для model, потому что слушаю событие отработанного метода(функции) addBocorderHistory.
 

$this->model_setting_event->addEvent('notificationTelegram', 'catalog/model/extension/module/bocorder/addBocorderHistory/after', 'extension/module/notificationTelegram/sendOrderAlert');



А события контролеров не срабатывали, потому-что я обращался в методу index каждого контролера вот так checkout/success/index/after
Но увидел что ты просто обратился к файлу контролера и понял что index отрабатывает "автоматом".
Поэтому у меня начало срабатывать и события контролера checkout/success

$this->model_setting_event->addEvent('notificationTelegram', 'catalog/controller/checkout/success/after', 'extension/module/notificationTelegram/sendOrderAlert');

А вот с View пока не разобрался)
 

 
Надіслати
Поділитися на інших сайтах


В 16.06.2020 в 13:57, karpo518 сказал:

а событие controller/product/product/index/after не существует. Верно?

да потому как метод index - неявный

 

В 16.06.2020 в 13:57, karpo518 сказал:

2. При дебаге параметров передаваемых в обработчик события я получаю 'route' => 'product/product', 'args' => NULL, 'output' => NULL. Так и должно быть? Неужели мне самому нужно парсить get и post? Например, мне нужна не случайная цифра из get запроса, а реальный id товара. В контроллере это число проверяется, но в обработчик события не попадает 


а причем здесь это? эти параметры не есть параметры метода

 

В 16.06.2020 в 13:57, karpo518 сказал:

В чём может быть причина?


в непонимании механизма событий

 

26 минут назад, fortoonas сказал:

А вот с View пока не разобрался)

 

Что неясно?

  • +1 1
Надіслати
Поділитися на інших сайтах

3 часа назад, chukcha сказал:

Что неясно?

Как прослушать событие на view, к примеру эта-же страница при запросе к контролеру
 

site.com/index.php?route=checkout/success

происходит событие view
 

$this->response->setOutput($this->load->view('common/success', $data));

Если я правильно понял, то делаю так
 

$this->model_setting_event->addEvent(
'notificationTelegram',
'catalog/view/theme/modern/template/common/success/after',
'extension/module/notificationTelegram/sendOrderAlert');

Но так не срабатывает....

Надіслати
Поділитися на інших сайтах


Вы не должны укзывать щаблона

catalog/view/common/success/after

 

Для того чтобы это понять  - откройте
loader

view

и посмотрите  как отрабатывается route

  • +1 1
Надіслати
Поділитися на інших сайтах

3 часа назад, chukcha сказал:

Вы не должны укзывать щаблона


catalog/view/common/success/after

 

Для того чтобы это понять  - откройте
loader

view

и посмотрите  как отрабатывается route

Спасибо, теперь понял)

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.