Browse Source

add default controller, layout and view file support

master
filesite 2 years ago
parent
commit
b984586e30
  1. 25
      controller/Controller.php
  2. 17
      lib/FSC.php

25
controller/Controller.php

@ -24,25 +24,36 @@ Class Controller {
//render view //render view
protected function render($viewName, $viewData = array(), $pageTitle = '') { protected function render($viewName, $viewData = array(), $pageTitle = '') {
$layoutFile = __DIR__ . '/../views/layout/' . $this->layout . '.php'; $baseLayoutFile = $themeLayoutFile = $layoutFile = '';
$viewFile = __DIR__ . '/../views/' . FSC::$app['controller'] . '/' . $viewName . '.php'; $baseViewFile = $themeViewFile = $viewFile = '';
$baseLayoutFile = __DIR__ . '/../views/layout/' . $this->layout . '.php';
$baseViewFile = __DIR__ . '/../views/' . FSC::$app['controller'] . '/' . $viewName . '.php';
//双斜杠//开头的共享视图支持 //双斜杠//开头的共享视图支持
if (preg_match('/^\/\//', $viewName)) { if (preg_match('/^\/\//', $viewName)) {
$viewFile = __DIR__ . '/../views/' . str_replace('//', '/', $viewName) . '.php'; $baseViewFile = __DIR__ . '/../views/' . str_replace('//', '/', $viewName) . '.php';
} }
if (!empty(FSC::$app['config']['theme'])) { if (!empty(FSC::$app['config']['theme'])) {
$layoutFile = __DIR__ . '/../themes/' . FSC::$app['config']['theme'] . '/views/layout/' . $this->layout . '.php'; $themeLayoutFile = __DIR__ . '/../themes/' . FSC::$app['config']['theme'] . '/views/layout/' . $this->layout . '.php';
$viewFile = __DIR__ . '/../themes/' . FSC::$app['config']['theme'] . '/views/' . FSC::$app['controller'] . '/' . $viewName . '.php'; $themeViewFile = __DIR__ . '/../themes/' . FSC::$app['config']['theme'] . '/views/' . FSC::$app['controller'] . '/' . $viewName . '.php';
//双斜杠//开头的共享视图支持 //双斜杠//开头的共享视图支持
if (preg_match('/^\/\//', $viewName)) { if (preg_match('/^\/\//', $viewName)) {
$viewFile = __DIR__ . '/../themes/' . FSC::$app['config']['theme'] . '/views/' . $themeViewFile = __DIR__ . '/../themes/' . FSC::$app['config']['theme'] . '/views/' .
str_replace('//', '/', $viewName) . '.php'; str_replace('//', '/', $viewName) . '.php';
} }
} }
if (!empty($themeLayoutFile) && file_exists($themeLayoutFile)) {
$layoutFile = $themeLayoutFile;
$viewFile = $themeViewFile;
}else if (file_exists($baseLayoutFile)) {
$layoutFile = $baseLayoutFile;
$viewFile = $baseViewFile;
}
//include layout and view //include layout and view
if (file_exists($layoutFile)) { if (!empty($layoutFile)) {
ob_start(); ob_start();
include_once $layoutFile; include_once $layoutFile;

17
lib/FSC.php

@ -81,11 +81,22 @@ Class FSC {
//call class and function //call class and function
$className = ucfirst($controller) . 'Controller'; $className = ucfirst($controller) . 'Controller';
$funName = 'action' . ucfirst($action); $funName = 'action' . ucfirst($action);
$controllerFile = __DIR__ . "/../controller/{$className}.php";
$controllerFile = $baseControllerFile = $themeControllerFile = '';
$baseControllerFile = __DIR__ . "/../controller/{$className}.php";
if (!empty($config['theme'])) { if (!empty($config['theme'])) {
$controllerFile = __DIR__ . "/../themes/{$config['theme']}/controller/{$className}.php"; $themeControllerFile = __DIR__ . "/../themes/{$config['theme']}/controller/{$className}.php";
} }
if (file_exists($controllerFile)) {
//优先使用皮肤目录下的控制器,其次默认controller目录下的
if (!empty($themeControllerFile) && file_exists($themeControllerFile)) {
$controllerFile = $themeControllerFile;
}else if (file_exists($baseControllerFile)) {
$controllerFile = $baseControllerFile;
}
if (!empty($controllerFile)) {
require_once $controllerFile; require_once $controllerFile;
$cls = new $className(); $cls = new $className();
if (method_exists($className, $funName)) { if (method_exists($className, $funName)) {

Loading…
Cancel
Save