/** * @param $method * @param array $viewData * @param array $params * @return mixed */ public function runAction($method, array $viewData = [], array $params = []) { if (!$this->canRunAction($method, $params)) { return $this->actionNotFound($method); } if (!$this->group->processBinds($params, $this->requestData)) { return $this->actionNotFound($method); } $this->requestData = array_merge($viewData, $this->requestData); $this->requestParams = $params; $result = $this->group->runBeforeCallback($this); if ($result) { return $result; } if ($_action = $this->getAction('_before')) { $result = call_user_func_array($_action, [$this, $params]); if ($result) { return $result; } } if ($action = $this->getAction($method)) { $result = call_user_func_array($action, [$this, $params]); if ($result) { return $result; } } if ($_action = $this->getAction('_after')) { $result = call_user_func_array($_action, [$this, $params]); if ($result) { return $result; } } $event = ($this->adminOnly() ? 'page.admin:' : 'page:') . $this->slug; \Event::fire($event . $this->slug, [&$this]); $event .= ':' . $method; \Event::fire($event . $this->slug, [&$this]); }