public function func() { $model = Model::getModel("User"); if ($model->save($this->input)) { $this->redirect("/foo/login"); return; } else { list($foo, $control, $method) = explode("/", "/foo/bar"); MVC::executeController($control, $method, array(), "/foo/bar", array(), "", array("MVC_CURRENT_MODEL" => $model)); exit; } }
/** * Parse the request URL and execute the controller, or call callback with parsed details */ public static final function parseRequest($callback = null) { /* * Parse the request */ // Parse query string if (strpos($_SERVER['QUERY_STRING'], "?") !== false) { list($requestURI, $params) = explode("?", $_GET['url']); $params = substr($_SERVER['QUERY_STRING'], strpos($_SERVER['QUERY_STRING'], "?") + 1); } else { $requestURI = $_GET['url']; } if (property_exists("AppConfiguration", "APP_PATH")) { $path = AppConfiguration::$APP_PATH; $requestURI = preg_replace("#^{$path}#", "", $requestURI); } // Parse controller parameters $controllerParams = array(); if (strpos($requestURI, ";") !== false) { list($requestURI, $paramSegment) = explode(";", $requestURI); $paramParts = explode("/", $paramSegment); foreach ($paramParts as $part) { list($key, $value) = explode(":", $part); $controllerParams[$key] = $value; } } // Parse the URL $urlParts = explode("/", $requestURI); $controllerScript = $urlParts[0]; if (empty($controllerScript)) { $controllerScript = "index"; } // Function is $urlParts[1] $controllerFunction = $urlParts[1] == null ? "index" : $urlParts[1]; if (empty($callback)) { MVC::executeController($controllerScript, $controllerFunction, $controllerParams, $requestURI, array_slice($urlParts, 2), $params); } else { call_user_func_array($callback, array($controllerScript, $controllerFunction, $controllerParams, $requestURI, array_slice($urlParts, 2), $params)); } }