/** * This method forward to the action. * * @param object $Router the instance of the Router class. */ public static function run($request, $subMvc) { TemplateMapper::templates(); $tpl = TemplateMapper::getTemplate($subMvc->moduleName(), $subMvc->controllerName(), $subMvc->actionName()); require_once Mvc::$currentApp->documentRoot() . "/" . $subMvc->controllerFile(); $controller = $subMvc->controllerClassName(); $action = $subMvc->actionFunctionName(); $subController = new $controller(); $subController->setParams($request->params()); $subController->setRequest($request); $subController->setDefaultModel(); $subController->setSubMvc($subMvc); $subController->setDefaultView($tpl, true); //init method acts as a constructor after all the variables being set $subController->init(); if (method_exists($subController, $action)) { ob_start(); $subController->{$action}(); $viewContent = ob_get_clean(); return $viewContent; } else { throw AiryException("AiryMVC: Missing Action Function."); } return NULL; }
/** * This method forward to the action. * * @param object $Router the instance of the Router class. */ public static function run() { $request = new Request(); $request->set(); $results = Route::resolveRoute($request); if (!is_null($results)) { Mvc::setCurrentMvc($results['mvc']); Mvc::setCurrentApp(Framework::app($results['mvc']->appName())); $request = $results['request']; TemplateMapper::templates(); $tpl = TemplateMapper::getTemplate(Mvc::moduleName(), Mvc::controllerName(), Mvc::actionName()); session_start(); //Take out global, not use require_once Mvc::controllerFile(); $controller = Mvc::controllerClassName(); $action = Mvc::actionFunctionName(); self::$runController = new $controller(); self::$runController->setParams($request->params()); self::$runController->setRequest($request); self::$runController->setDefaultModel(); self::$runController->setDefaultView($tpl); //init method acts as a constructor after all the variables being set self::$runController->init(); if (method_exists(self::$runController, $action)) { self::$runController->{$action}(); } else { throw AiryException("AiryMVC: Missing Action Function."); } return self::$runController; session_write_close(); } }