コード例 #1
0
ファイル: Layout.php プロジェクト: webcitron/subframe
 public function render($arrLayoutData = array())
 {
     $arrBoxesResponseContents = array();
     foreach ($this->arrPlaceholderBoxes as $strPlaceholderName => $arrBoxes) {
         $arrBoxesResponseContents[$strPlaceholderName] = array();
         foreach ($arrBoxes as $objBox) {
             $objBoxResponse = $objBox->launch();
             $arrBoxesResponseContents[$strPlaceholderName][] = $objBoxResponse->__toString();
         }
     }
     $strLayoutFullName = get_called_class();
     $arrLayoutFullNameTokens = explode('\\', $strLayoutFullName);
     $strLayoutName = array_pop($arrLayoutFullNameTokens);
     $strLayoutPath = sprintf('%s/layout/view/%s', Application::getInstance()->strDirectory, $strLayoutName);
     $objTemplater = Templater::createSpecifiedTemplater(Config::get('templater'));
     $objCurrentRoute = Router::getCurrentRoute();
     if (!empty($objCurrentRoute)) {
         $arrLayoutData['route'] = array('name' => $objCurrentRoute->strRouteName, 'action' => $objCurrentRoute->strMethodName);
     }
     if (method_exists($this, 'launch')) {
         $arrLayoutData = array_merge($this->launch(), $arrLayoutData);
     }
     $strLayoutContent = $objTemplater->getTemplateFileContent($strLayoutPath, $arrLayoutData);
     foreach ($this->arrPlaceholderBoxes as $strPlaceholderName => $arrBoxes) {
         $strLayoutContent = str_replace(sprintf('[placeholder:%s]', $strPlaceholderName), join('', $arrBoxesResponseContents[$strPlaceholderName]), $strLayoutContent);
     }
     // removing unused placeholders
     $strLayoutContent = preg_replace('/\\[placeholder\\:([a-z\\-]+)\\]/', '', $strLayoutContent);
     //        echo $strLayoutContent;exit();
     //        echo $strLayoutContent;exit();
     return $strLayoutContent;
 }
コード例 #2
0
ファイル: Url.php プロジェクト: webcitron/subframe
 public static function route($strRouteName, $arrParams = array(), $strLanguage = null)
 {
     $strUri = '';
     if (empty($strLanguage)) {
         $objLanguages = Languages::getInstance();
         $strLanguage = $objLanguages->getCurrentLanguage();
     }
     if (strpos($strRouteName, '::') === false) {
         $strRouteName .= '::index';
     }
     $objRouter = Router::getInstance();
     $objRoute = $objRouter->getRouteByNameAndLang($strRouteName, $strLanguage);
     if (empty($objRoute)) {
         $objRoute = $objRouter->getRouteByName('Homepage');
     }
     if (!empty($objRoute)) {
         $strUri = $objRoute->buildUri($arrParams);
     }
     return $strUri;
 }
コード例 #3
0
ファイル: Route.php プロジェクト: webcitron/subframe
 public static function add($strRouteFullName, $arrUris)
 {
     $objRouter = Router::getInstance();
     //        $arrControllerActionTokens = explode('/', $strControllerAction);
     $arrRouteMethod = explode('::', $strRouteFullName);
     if (count($arrRouteMethod) == 2) {
         $strRouteName = $arrRouteMethod[0];
         $strRouteMethod = $arrRouteMethod[1];
     } else {
         $strRouteName = $arrRouteMethod[0];
         $strRouteMethod = 'index';
     }
     if (!is_array($arrUris)) {
         $arrUris = array($arrUris);
     }
     $objRoute = new Route($strRouteName);
     $objRoute->addUris($arrUris);
     $objRoute->setMethod($strRouteMethod);
     $objRoute->recognizeSetParams($arrUris);
     $objRoute->strRouteFullName = $strRouteFullName;
     $objRouter->arrRoutes[$strRouteFullName] = $objRoute;
 }
コード例 #4
0
ファイル: Application.php プロジェクト: webcitron/subframe
 public function init()
 {
     $this->objRouter = Router::getInstance();
     self::$strCurrentAppUrl = $this->currentAppUrl();
 }
コード例 #5
0
ファイル: Blitz.php プロジェクト: webcitron/subframe
 public static function currentUrl()
 {
     $objCurrentRoute = \webcitron\Subframe\Router::getCurrentRoute();
     $arrRequestParams = \webcitron\Subframe\Request::getParams();
     $strUrl = \webcitron\Subframe\Url::route($objCurrentRoute->strRouteFullName, $arrRequestParams);
     return $strUrl;
 }