You are using an outdated browser. For a faster, safer browsing experience, upgrade for free today.

Ako sa pracuje v OpenCart s Event onAfter, ako to funguje?

V OpenCarte je event system (systém udalostí) kľúčovým spôsobom, ako upravovať alebo rozširovať funkcionalitu bez zásahu do core kódu. onAfter (resp. akákoľvek udalosť s týmto názvom) funguje ako hook po vykonaní určitej akcie – umožní ti „počúvať“ a vykonať vlastný kód po určitej udalosti.

Ako fungujú onAfter eventy v OpenCart:

OpenCart eventy majú podobu:

bash
action/event/trigger

Napríklad:

php
$this->event->trigger('catalog/controller/product/product/after', [&$route, &$args, &$output]);

Tento konkrétny príklad hovorí:

  • „Zavolaj všetky eventy registrované na catalog/controller/product/product/after“
  • A odovzdáva im $route, $args a výstup z controllera $output.

Pojmy:

  • onBefore – udalosť pred vykonaním nejakej akcie.
  • onAfter – udalosť po vykonanie akcie, kedy už sú k dispozícii výsledky (napr. $output).

Registrácia eventu (napr. v tvojom module):

php
$this->model_setting_event->addEvent('moj_modul_after_product', 'catalog/controller/product/product/after', 'extension/module/moj_modul/onAfterProduct');

Tým hovoríš: Až bude dokončený controller catalog/controller/product/product, spusti metódu onAfterProduct.

Vlastný handler (napr. catalog/controller/extension/module/moj_modul.php):

php
public function onAfterProduct(&$route, &$args, &$output) { // $output je HTML stránka, ktorú môžeš upraviť $output .= '<!-- Môj kód po načítaní produktu -->'; }

&$output je dôležitý, pretože umožňuje upraviť výsledný HTML výstup alebo obsah vrátený funkciou.

Zhrnutie:

  • onAfter eventy sa volajú po hlavnej akcii (napr. po načítaní controllera).
  • Máš prístup k $route, $args, $output → môžeš upraviť výsledok alebo pridať vlastnú logiku.
  • Udalosti sa registrujú v databáze pomocou model_setting_event.