Skip to content

Commit

Permalink
Adding Events To Call Action
Browse files Browse the repository at this point in the history
Adding Events To Call Action - Debugging

Adding Events To Call Action - Adjusting to use Observer Results

Adding Events To Call Action - Adjusting to use Observer Results - Debugging

Adding Events To Call Action - Adjusting to use Observer Results - Applying Fix

Debugging Automated Testing
  • Loading branch information
Fenikkusu committed Feb 6, 2025
1 parent ca9be48 commit 46b519c
Showing 1 changed file with 46 additions and 3 deletions.
49 changes: 46 additions & 3 deletions phalcon/Dispatcher/AbstractDispatcher.zep
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ use Phalcon\Events\ManagerInterface;
use Phalcon\Filter\FilterInterface;
use Phalcon\Mvc\Model\Binder;
use Phalcon\Mvc\Model\BinderInterface;
use Phalcon\Support\Registry;

/**
* This is the base class for Phalcon\Mvc\Dispatcher and Phalcon\Cli\Dispatcher.
Expand Down Expand Up @@ -154,10 +155,52 @@ abstract class AbstractDispatcher extends AbstractInjectionAware implements Disp

public function callActionMethod(handler, string actionMethod, array! params = [])
{
return call_user_func_array(
[handler, actionMethod],
params
var result, observer, altHandler, altAction, altParams;

let altHandler = handler;
let altAction = actionMethod;
let altParams = params;

if this->eventsManager !== null && this->eventsManager instanceof ManagerInterface {
let observer = <Registry> this->getDi()->get(
"Phalcon\Support\Registry",
[[
"handler": handler,
"action": actionMethod,
"params": params
]]
);

this->eventsManager->fire(
"dispatch:beforeCallAction",
this,
observer
);

let altHandler = observer->get("handler");
let altAction = observer->get("action");
let altParams = observer->get("params", [], "array");
}

let result = call_user_func_array(
[
altHandler,
altAction
],
array_values(altParams)
);

if this->eventsManager !== null && this->eventsManager instanceof ManagerInterface {
let observer["result"] = result;

this->eventsManager->fire(
"dispatch:afterCallAction",
this,
observer
);
}

return result;
}

/**
Expand Down

0 comments on commit 46b519c

Please sign in to comment.