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

Jak se pracuje v OpenCart s Event onAfter, jak to funguje?

V OpenCartu je event system (systém událostí) klíčovým způsobem, jak upravovat nebo rozšiřovat funkcionalitu bez zásahu do core kódu. onAfter (resp. jakákoli událost s tímto názvem) funguje jako hook po provedení určité akce – umožní ti „naslouchat“ a provést vlastní kód po určité události.

Jak fungují onAfter eventy v OpenCart:

OpenCart eventy mají podobu:

bash
action/event/trigger

Například:

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

Tento konkrétní příklad říká:

  • „Zavolej všechny eventy registrované na catalog/controller/product/product/after“
  • A předává jim $route, $args a výstup z controlleru $output.

Pojmy:

  • onBefore – událost před provedením nějaké akce.
  • onAfter – událost po provedení akce, kdy už jsou k dispozici výsledky (např. $output).

Registrace eventu (např. ve tvém modulu):

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

Tím říkáš: Až bude dokončen controller catalog/controller/product/product, spusť metodu onAfterProduct.

Vlastní handler (např. catalog/controller/extension/module/muj_modul.php):

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

&$output je důležitý, protože umožňuje upravit výsledný HTML výstup nebo obsah vrácený funkcí.

Shrnutí:

  • onAfter eventy se volají po hlavní akci (např. po načtení controlleru).
  • Máš přístup k $route, $args, $output → můžeš upravit výsledek nebo přidat vlastní logiku.
  • Události se registrují v databázi pomocí model_setting_event.