public static function getTemplate($moduleName, $controllerName, $actionName) { if (is_null(TemplateMapper::$templates)) { TemplateMapper::templates(); } if (is_null(TemplateMapper::$templates)) { return NULL; } foreach (TemplateMapper::$templates as $mapModuleName => $controllerAction) { if ($moduleName == $mapModuleName) { if (isset(TemplateMapper::$templates[$mapModuleName]["ALL"])) { return TemplateMapper::$templates[$mapModuleName]["ALL"]["ALL"]; } foreach ($controllerAction as $mapControllerName => $action) { if ($moduleName == $mapModuleName) { if ($controllerName == $mapControllerName || $controllerName == Route::fromHyphenToCamelCase($mapControllerName, TRUE)) { if (isset(TemplateMapper::$templates[$mapModuleName][$mapControllerName]["ALL"])) { return TemplateMapper::$templates[$mapModuleName][$mapControllerName]["ALL"]; } } } foreach ($action as $mapActionName => $tpl) { if ($moduleName == $mapModuleName) { if ($controllerName == $mapControllerName || $controllerName == Route::fromHyphenToCamelCase($mapControllerName, TRUE)) { if ($actionName == $mapActionName || $actionName == Route::fromHyphenToCamelCase($mapActionName, FALSE)) { return $tpl; } } } } } } } return NULL; }
/** * 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(); } }