瀏覽代碼

add creator for db

Zhu Jinhui 7 年之前
父節點
當前提交
af948042b8

+ 13 - 13
demo/private/actions/database/add.php

@@ -6,12 +6,12 @@
  */
 namespace actions\database;
 
-use Qii\Action_Abstract;
+use Qii\Base\Action;
 
-class add extends Action_Abstract
+class add extends Action
 {
-	protected $enableView = true;
-	protected $enableDatabase = true;
+	public $enableView = true;
+	public $enableDB = true;
 
 	public function __construct()
 	{
@@ -23,21 +23,21 @@ class add extends Action_Abstract
 	 * 创建规则
 	 * @author Jinhui Zhu 2015-08-23
 	 */
-	public function execute()
+	public function run()
 	{
-		$database = $this->_request->get('database');
-		$tableName = $this->_request->get('tableName');
+		$database = $this->request->get('database');
+		$tableName = $this->request->get('tableName');
 		if (!$database) throw new \Exception('数据库名不能为空', __LINE__);
 		if (!$tableName) throw new \Exception('数据表名不能为空', __LINE__);
-		$this->_view->assign('database', $database);
-		$this->_view->assign('tableName', $tableName);
+		$this->controller->view->assign('database', $database);
+		$this->controller->view->assign('tableName', $tableName);
 
 
-		$rules = $this->_load->model('table')->getRules($database, $tableName);
+		$rules = $this->controller->load->model('table')->getRules($database, $tableName);
 		$fields = array_flip($rules['rules']['fields']);
-		$this->_view->assign('rules', $rules);
-		$this->_view->assign('fields', $fields);
+		$this->controller->view->assign('rules', $rules);
+		$this->controller->view->assign('fields', $fields);
 
-		$this->_view->display('manage/data/add.html');
+		$this->controller->view->display('manage/data/add.html');
 	}
 }

+ 24 - 23
demo/private/actions/database/creator.php

@@ -6,12 +6,12 @@
  */
 namespace actions\database;
 
-use Qii\Action_Abstract;
+use Qii\Base\Action;
 
-class creator extends Action_Abstract
+class creator extends Action
 {
-	protected $enableView = true;
-	protected $enableDatabase = true;
+	public $enableView = true;
+	public $enableDB = true;
 
 	public function __construct()
 	{
@@ -22,38 +22,39 @@ class creator extends Action_Abstract
 	 * 创建规则
 	 * @author Jinhui Zhu 2015-08-23
 	 */
-	public function execute()
+	public function run()
 	{
-		list($database, $tableName) = array_pad(func_get_args(), 2, '');
+		$args = func_get_args();
+		list($database, $tableName) = array_pad($args, 2, '');
 		$loadDatabase = $database ? false : true;
-		$this->_view->assign('loadDatabase', $loadDatabase);
-		$tableName = $this->_request->get('tableName', $tableName);
-		$database = $this->_request->get('database', $database);
+		$this->controller->view->assign('loadDatabase', $loadDatabase);
+		$tableName = $this->request->get('tableName', $tableName);
+		$database = $this->request->get('database', $database);
 		try {
-			$databases = $this->_load->model('table')->getDatabases();
+			$databases = $this->controller->load->model('table')->getDatabases();
 			if (!$database && count($database) > 0) $database = $databases[0];
-			$this->_view->assign('databases', $databases);
-			$tables = $this->_load->model('table')->getTableLists($database);
+			$this->controller->view->assign('databases', $databases);
+			$tables = $this->controller->load->model('table')->getTableLists($database);
 			if (!$tableName && count($tables) > 0) {
 				$tableName = $tables[0];
 			}
-			$this->_view->assign('tables', $tables);
+			$this->controller->view->assign('tables', $tables);
 			$fields = array();
 			$rules = array();
 			if ($tableName != '') {
-				$fields = $this->_load->model('table')->getFieldsLists($database, $tableName);
-				$rules = $this->_load->model('table')->getRules($database, $tableName);
+				$fields = $this->controller->load->model('table')->getFieldsLists($database, $tableName);
+				$rules = $this->controller->load->model('table')->getRules($database, $tableName);
 				if (!isset($rules['rules'])) $rules['rules'] = array();
 			}
 			$validateRules = isset($rules['rules']['validate']) ? $rules['rules']['validate'] : array();
-			$this->_view->assign('validateRules', $validateRules);
-			$validate = new \Qii\Validate();
-			$this->_view->assign('validate', $validate->getRuleNames());
-			$this->_view->assign('fields', $fields);
-			$this->_view->assign('rules', isset($rules['rules']) ? $rules['rules'] : array());
-			$this->_view->assign('database', $database);
-			$this->_view->assign('tableName', $tableName);
-			$this->_view->display('manage/data/creator.html');
+			$this->controller->view->assign('validateRules', $validateRules);
+			$validate = new \Qii\Library\Validate();
+			$this->controller->view->assign('validate', $validate->getRuleNames());
+			$this->controller->view->assign('fields', $fields);
+			$this->controller->view->assign('rules', isset($rules['rules']) ? $rules['rules'] : array());
+			$this->controller->view->assign('database', $database);
+			$this->controller->view->assign('tableName', $tableName);
+			$this->controller->view->display('manage/data/creator.html');
 		} catch (Exception $e) {
 			$this->showErrorPage($e->getMessage());
 		}

+ 24 - 24
demo/private/actions/database/rules.php

@@ -6,12 +6,12 @@
  */
 namespace actions\database;
 
-use Qii\Action_Abstract;
+use Qii\Base\Action;
 
-class rules extends Action_Abstract
+class rules extends Action
 {
-	protected $enableView = true;
-	protected $enableDatabase = true;
+	public $enableView = true;
+	public $enableDB = true;
 
 	public function __construct()
 	{
@@ -23,44 +23,44 @@ class rules extends Action_Abstract
 	 * 创建规则
 	 * @author Jinhui Zhu 2015-08-23
 	 */
-	public function execute()
+	public function run()
 	{
 		list($database, $tableName) = array_pad(func_get_args(), 2, '');
 		$loadDatabase = $database ? false : true;
-		$this->_view->assign('loadDatabase', $loadDatabase);
-		$tableName = $this->_request->get('tableName', $tableName);
-		$database = $this->_request->get('database', $database);
+		$this->controller->view->assign('loadDatabase', $loadDatabase);
+		$tableName = $this->request->get('tableName', $tableName);
+		$database = $this->request->get('database', $database);
 		try {
-			$databases = $this->_load->model('table')->getDatabases();
+			$databases = $this->controller->load->model('table')->getDatabases();
 			if (!$database && count($database) > 0) $database = $databases[0];
-			$this->_view->assign('databases', $databases);
-			$tables = $this->_load->model('table')->getTableLists($database);
+			$this->controller->view->assign('databases', $databases);
+			$tables = $this->controller->load->model('table')->getTableLists($database);
 			if (!$tableName && count($tables) > 0) {
 				$tableName = $tables[0];
 			}
-			$this->_view->assign('tables', $tables);
+			$this->controller->view->assign('tables', $tables);
 			$fields = array();
 			$rules = array();
 			$rules['rules'] = array();
 			if ($tableName != '') {
-				$fields = $this->_load->model('table')->getFieldsLists($database, $tableName);
-				$rules = $this->_load->model('table')->getRules($database, $tableName);
+				$fields = $this->controller->load->model('table')->getFieldsLists($database, $tableName);
+				$rules = $this->controller->load->model('table')->getRules($database, $tableName);
 				if (isset($rules['rules'])) $rules['rules'] = $rules['rules'];
 			}
 			$validateRules = isset($rules['rules']['validate']) ? $rules['rules']['validate'] : array();
 			$invalidMessage = isset($rules['rules']['invalidMessage']) ? $rules['rules']['invalidMessage'] : array();
 			$extRules = isset($rules['rules']['extRules']) ? $rules['rules']['extRules'] : array();
-			$this->_view->assign('validateRules', $validateRules);
-			$this->_view->assign('invalidMessage', $invalidMessage);
-			$this->_view->assign('extRules', $extRules);
+			$this->controller->view->assign('validateRules', $validateRules);
+			$this->controller->view->assign('invalidMessage', $invalidMessage);
+			$this->controller->view->assign('extRules', $extRules);
 
-			$validate = new \Qii\Validate();
-			$this->_view->assign('validate', $validate->getRuleNames());
-			$this->_view->assign('fields', $fields);
-			$this->_view->assign('rules', isset($rules['rules']) ? $rules['rules'] : array());
-			$this->_view->assign('database', $database);
-			$this->_view->assign('tableName', $tableName);
-			$this->_view->display('manage/data/rules.html');
+			$validate = new \Qii\Library\Validate();
+			$this->controller->view->assign('validate', $validate->getRuleNames());
+			$this->controller->view->assign('fields', $fields);
+			$this->controller->view->assign('rules', isset($rules['rules']) ? $rules['rules'] : array());
+			$this->controller->view->assign('database', $database);
+			$this->controller->view->assign('tableName', $tableName);
+			$this->controller->view->display('manage/data/rules.html');
 		} catch (Exception $e) {
 			$this->showErrorPage($e->getMessage());
 		}

+ 22 - 22
demo/private/actions/database/table.php

@@ -6,12 +6,12 @@
  */
 namespace actions\database;
 
-use Qii\Action_Abstract;
+use Qii\Base\Action;
 
-class table extends Action_Abstract
+class table extends Action
 {
-	protected $enableView = true;
-	protected $enableDatabase = true;
+	public $enableView = true;
+	public $enableDB = true;
 
 	public function __construct()
 	{
@@ -23,33 +23,33 @@ class table extends Action_Abstract
 	 * 创建规则
 	 * @author Jinhui Zhu 2015-08-23
 	 */
-	public function execute()
+	public function run()
 	{
 		list($database, $tableName) = array_pad(func_get_args(), 2, '');
 		$loadDatabase = true;
-		$this->_view->assign('controller', $this->_controller);
-		$this->_view->assign('action', $this->_action);
+		$this->controller->view->assign('controller', $this->_controller);
+		$this->controller->view->assign('action', $this->_action);
 		try {
-			$this->_view->assign('loadDatabase', $loadDatabase);
-			$database = $this->_request->get('database', $database);
-			$tableName = $this->_request->get('tableName', $tableName);
-			$currentPage = $this->_request->get('currentPage', 1);
+			$this->controller->view->assign('loadDatabase', $loadDatabase);
+			$database = $this->request->get('database', $database);
+			$tableName = $this->request->get('tableName', $tableName);
+			$currentPage = $this->request->get('currentPage', 1);
 			$databases = array();
 			$tables = array();
 			if ($loadDatabase) {
-				$databases = $this->_load->model('table')->getDatabases();
+				$databases = $this->controller->load->model('table')->getDatabases();
 				if (!$database && count($database) > 0) $database = $databases[0];
 				if (!$database) throw new \Exception('数据库名不能为空', __LINE__);
-				$tables = $this->_load->model('table')->getTableLists($database);
+				$tables = $this->controller->load->model('table')->getTableLists($database);
 				if (!$tableName && count($tables) > 0) {
 					$tableName = $tables[0];
 				}
 			}
-			$this->_view->assign('databases', $databases);
-			$this->_view->assign('tables', $tables);
+			$this->controller->view->assign('databases', $databases);
+			$this->controller->view->assign('tables', $tables);
 
-			$this->_view->assign('database', $database);
-			$this->_view->assign('tableName', $tableName);
+			$this->controller->view->assign('database', $database);
+			$this->controller->view->assign('tableName', $tableName);
 			$data = array();
 			$data['page'] = array();
 			$data['page']['currentPage'] = 1;
@@ -59,16 +59,16 @@ class table extends Action_Abstract
 			$data['rules']['end'] = array();
 			$data['rows'] = array();
 			if ($tableName) {
-				$data = $this->_load->model('table')->loadTableData($database, $tableName, $currentPage);
+				$data = $this->controller->load->model('table')->loadTableData($database, $tableName, $currentPage);
 			}
 			$start = 0;
 			if ($data['page']['currentPage'] >= 6) {
 				$start = $data['page']['currentPage'] - 6;
 			}
-			$this->_view->assign('start', $start);
-			$this->_view->assign('data', $data);
-			$this->_view->assign('pages', $data['page']);
-			$this->_view->display('manage/data/table.html');
+			$this->controller->view->assign('start', $start);
+			$this->controller->view->assign('data', $data);
+			$this->controller->view->assign('pages', $data['page']);
+			$this->controller->view->display('manage/data/table.html');
 		} catch (Exception $e) {
 			$this->showErrorPage($e->getMessage());
 		}

+ 18 - 18
demo/private/actions/database/update.php

@@ -6,12 +6,12 @@
  */
 namespace actions\database;
 
-use Qii\Action_Abstract;
+use Qii\Base\Action;
 
-class update extends Action_Abstract
+class update extends Action
 {
-	protected $enableView = true;
-	protected $enableDatabase = true;
+	public $enableView = true;
+	public $enableDB = true;
 
 	public function __construct()
 	{
@@ -23,30 +23,30 @@ class update extends Action_Abstract
 	 * 创建规则
 	 * @author Jinhui Zhu 2015-08-23
 	 */
-	public function execute()
+	public function run()
 	{
 		try {
-			$database = $this->_request->get('__database');
-			$tableName = $this->_request->get('__tableName');
-			$pri = explode(',', $this->_request->get('__pri', ''));
+			$database = $this->request->get('__database');
+			$tableName = $this->request->get('__tableName');
+			$pri = explode(',', $this->request->get('__pri', ''));
 			$val = array();
 			foreach ($pri AS $key) {
-				$val[$key] = $this->_request->get($key);
+				$val[$key] = $this->request->get($key);
 			}
 			if (!$database || !$tableName || !$pri || !$val) {
 				throw new \Exception('参数不正确', __LINE__);
 			}
-			$rules = $this->_load->model('table')->getRules($database, $tableName);
+			$rules = $this->controller->load->model('table')->getRules($database, $tableName);
 
-			$data = $this->_load->model('table')->loadDataFromTable($database, $tableName, $pri, $val);
-			$this->_view->assign('database', $database);
-			$this->_view->assign('tableName', $tableName);
-			$this->_view->assign('pri', $pri);
-			$this->_view->assign('rules', $rules);
-			$this->_view->assign('val', $val);
-			$this->_view->assign('data', $data);
+			$data = $this->controller->load->model('table')->loadDataFromTable($database, $tableName, $pri, $val);
+			$this->controller->view->assign('database', $database);
+			$this->controller->view->assign('tableName', $tableName);
+			$this->controller->view->assign('pri', $pri);
+			$this->controller->view->assign('rules', $rules);
+			$this->controller->view->assign('val', $val);
+			$this->controller->view->assign('data', $data);
 
-			$this->_view->display('manage/data/update.html');
+			$this->controller->view->display('manage/data/update.html');
 		} catch (Exception $e) {
 			$this->showErrorPage($e->getMessage());
 		}

+ 2 - 2
demo/private/actions/demo.php

@@ -1,9 +1,9 @@
 <?php
 namespace actions;
 
-use Qii\Action_Abstract;
+use Qii\Base\Action;
 
-class demo extends Action_Abstract
+class demo extends Action
 {
 	public function execute()
 	{

+ 6 - 5
demo/private/configure/db.ini

@@ -6,20 +6,21 @@ driver = pdo
 debug = true
 ;使用的数据库类型
 use_db_driver = mysql
-master[db] = wecv
+
+master[db] = qii
 master[host] = 127.0.0.1
 master[user] = root
 master[password] = A119328118a
 
-slave[0.db] = istudy
+slave[0.db] = qii
 slave[0.host] = 127.0.0.1
-slave[0.user] = wecv
+slave[0.user] = root
 slave[0.password] = A119328118a
 
 
-slave[1.db] = istudy
+slave[1.db] = qii
 slave[1.host] = 127.0.0.1
-slave[1.user] = wecv
+slave[1.user] = root
 slave[1.password] = A119328118a
 
 [product:common]

+ 12 - 0
demo/private/configure/path.config.php

@@ -0,0 +1,12 @@
+<?php
+return array(
+	'weburl' => 'http://www.qiiframework.com',
+	'left' => _link('/menu/left'),
+	'top' => _link('/menu/top'),
+	'index' => _link('/main/index'),
+	'creator' => _link('/database/creator'),
+	'rules' => _link('/database/rules'),
+	'update' => _link('/database/update'),
+	'table' => _link('/database/table'),
+	'loginCheck' => _link('/database/checkLogin'),
+);

+ 1 - 1
demo/private/configure/router.config.php

@@ -2,5 +2,5 @@
 return [
     //'index:index' => 'dirs:index',
     'home:index' => 'index:index',
-    'manage:*' => 'manage\{1}:*'
+    'api:*' => 'api\{1}:*'
 ];

+ 1 - 1
demo/private/configure/table.rules.config.php

@@ -1,6 +1,6 @@
 <?php
 return array(
-	'database' => 'test',
+	'database' => 'qii',
 	'tableName' => 'database_table_rules',
 	'rules' => array(
 		'length' => array(

+ 57 - 57
demo/private/controller/api/database.php

@@ -11,7 +11,7 @@ class database extends base
 	public function __construct()
 	{
 		parent::__construct();
-		$this->_load->model('table')->checkRuleTable();
+		$this->load->model('table')->checkRuleTable();
 	}
 
 	/**
@@ -20,20 +20,20 @@ class database extends base
 	public function creatorAction()
 	{
 		$data = array();
-		$database = $this->_request->post('database');
-		$tableName = $this->_request->post('tableName');
-		$rules = $this->_request->post($tableName);
+		$database = $this->request->post('database');
+		$tableName = $this->request->post('tableName');
+		$rules = $this->request->post($tableName);
 		if (!$rules) {
 			$data['code'] = 1;
 			echo $this->Json($data);
 			return;
 		}
-		$result = $this->_load->model('table')->saveRules($database, $tableName, $rules);
+		$result = $this->load->model('table')->saveRules($database, $tableName, $rules);
 		if ($result) {
 			$data['code'] = 0;
 		} else {
 			$data['code'] = 1;
-			$data['error'] = $this->_load->model('table')->tablesError;
+			$data['error'] = $this->load->model('table')->tablesError;
 		}
 		$this->echoJson($data);
 	}
@@ -44,20 +44,20 @@ class database extends base
 	public function rulesAction()
 	{
 		$data = array();
-		$database = $this->_request->post('database');
-		$tableName = $this->_request->post('tableName');
-		$rules = $this->_request->post('rules');
+		$database = $this->request->post('database');
+		$tableName = $this->request->post('tableName');
+		$rules = $this->request->post('rules');
 		if (!$rules) {
 			$data['code'] = 1;
 			echo $this->Json($data);
 			return;
 		}
-		$result = $this->_load->model('table')->updateRules($database, $tableName, $rules);
+		$result = $this->load->model('table')->updateRules($database, $tableName, $rules);
 		if ($result) {
 			$data['code'] = 0;
 		} else {
 			$data['code'] = 1;
-			$data['error'] = $this->_load->model('table')->tablesError;
+			$data['error'] = $this->load->model('table')->tablesError;
 		}
 		$this->echoJson($data);
 	}
@@ -67,8 +67,8 @@ class database extends base
 	 */
 	public function tableListsAction()
 	{
-		$tableName = $this->_request->get('tableName', '');
-		$this->echoJson($this->_load->model('table')->getTableLists($this->_load->model('table')->getUseDB(), $tableName));
+		$tableName = $this->request->get('tableName', '');
+		$this->echoJson($this->load->model('table')->getTableLists($this->load->model('table')->getUseDB(), $tableName));
 	}
 
 	/**
@@ -76,8 +76,8 @@ class database extends base
 	 */
 	public function fieldsListsAction()
 	{
-		$tableName = $this->_request->get('tableName');
-		$this->echoJson($this->_load->model('table')->getFieldsLists($this->_load->model('table')->getUseDB(), $tableName));
+		$tableName = $this->request->get('tableName');
+		$this->echoJson($this->load->model('table')->getFieldsLists($this->load->model('table')->getUseDB(), $tableName));
 	}
 
 	/**
@@ -86,8 +86,8 @@ class database extends base
 	public function tableAction()
 	{
 		$data = array();
-		$database = $this->_request->get('__database', $this->_load->model('table')->getUseDB());
-		$tableName = $this->_request->get('__tableName', '');
+		$database = $this->request->get('__database', $this->load->model('table')->getUseDB());
+		$tableName = $this->request->get('__tableName', '');
 		if (!$database || !$tableName) {
 			$data['code'] = 1;
 			$data['msg'] = '参数不全';
@@ -95,22 +95,22 @@ class database extends base
 			return;
 		}
 
-		$pri = explode(',', $this->_request->get('__pri'));
+		$pri = explode(',', $this->request->get('__pri'));
 
 		$priVal = array();
 		foreach ($pri as $val) {
-			if (!$this->_request->keyExists($_GET, $val)) {
+			if (!$this->request->keyExists($_GET, $val)) {
 				$data['code'] = 1;
 				break;
 			}
-			$priVal[$val] = $this->_request->get($val);
+			$priVal[$val] = $this->request->get($val);
 		}
-		$result = $this->_load->model('table')->removeTableData($database, $tableName, $priVal);
+		$result = $this->load->model('table')->removeTableData($database, $tableName, $priVal);
 		if ($result) {
 			$data['code'] = 0;
 		} else {
 			$data['code'] = 1;
-			$data['error'] = $this->_load->model('table')->getError() === false ? '删除数据失败' : $this->_load->model('table')->getError();
+			$data['error'] = $this->load->model('table')->getError() === false ? '删除数据失败' : $this->load->model('table')->getError();
 		}
 		$this->echoJson($data);
 	}
@@ -124,22 +124,22 @@ class database extends base
 
 			$data = array();
 			$data['code'] = 0;
-			$database = $this->_request->post('__database');
-			$tableName = $this->_request->post('__tableName');
-			$pri = explode(',', $this->_request->post('__pri'));
+			$database = $this->request->post('__database');
+			$tableName = $this->request->post('__tableName');
+			$pri = explode(',', $this->request->post('__pri'));
 
 
-			$fields = $this->_request->post('fields');
+			$fields = $this->request->post('fields');
 			$priVal = array();
 			foreach ($pri as $val) {
-				if (!$this->_request->keyExists($_POST, $val)) {
+				if (!$this->request->keyExists($_POST, $val)) {
 					$data['code'] = 1;
 					break;
 				}
-				$priVal[$val] = $this->_request->post($val);
+				$priVal[$val] = $this->request->post($val);
 			}
 			if ($data['code'] != 1) {
-				$result = $this->_load->model('table')->updateTableData($database, $tableName, $priVal, $fields);
+				$result = $this->load->model('table')->updateTableData($database, $tableName, $priVal, $fields);
 				if (!$result->isError()) {
 					$data['code'] = 0;
 				} else {
@@ -165,13 +165,13 @@ class database extends base
 
 			$data = array();
 			$data['code'] = 0;
-			$database = $this->_request->post('database');
-			$tableName = $this->_request->post('tableName');
+			$database = $this->request->post('database');
+			$tableName = $this->request->post('tableName');
 
 
-			$fields = $this->_request->post('fields');
+			$fields = $this->request->post('fields');
 			if ($data['code'] != 1) {
-				$result = $this->_load->model('table')->addTableData($database, $tableName, $fields);
+				$result = $this->load->model('table')->addTableData($database, $tableName, $fields);
 				if ($result->getCode() == 0) {
 					$data['code'] = 0;
 				} else {
@@ -193,21 +193,21 @@ class database extends base
 	 */
 	public function downloadConfigAction()
 	{
-		$database = $this->_request->get('database');
-		$tableName = $this->_request->get('tableName');
+		$database = $this->request->get('database');
+		$tableName = $this->request->get('tableName');
 		try {
 			if (!$database || !$tableName) {
 				$data['code'] = 1;
 				$data['msg'] = '参数不全';
 				throw new Exception($data['msg'], $data['code']);
 			}
-			$result = $this->_load->model('table')->autoRules($database, $tableName);
+			$result = $this->load->model('table')->autoRules($database, $tableName);
 			if ($result) {
-				$tableStruct = $this->_load->model('table')->getTableSQL($database, $tableName);
+				$tableStruct = $this->load->model('table')->getTableSQL($database, $tableName);
 				$result['sql'] = '';
 				if ($tableStruct['sql']) $result['sql'] = str_replace("'", "\'", $tableStruct['sql']);
 				$downloadStr = "<?php\n\t return " . var_export($result, true) . ';';
-				$this->_load->library('download')->downloadByString($database . '.' . $tableName . '.config.php', $downloadStr);
+				_loadClass('\Qii\Library\Download')->downloadByString($database . '.' . $tableName . '.config.php', $downloadStr);
 			}
 		} catch (Exception $e) {
 			$this->showErrorPage($e->getMessage());
@@ -221,11 +221,11 @@ class database extends base
 	 */
 	public function tableSQLAction()
 	{
-		$database = $this->_request->get('database');
-		$tableName = $this->_request->get('tableName');
+		$database = $this->request->get('database');
+		$tableName = $this->request->get('tableName');
 		$data = array();
 		try {
-			$data = $this->_load->model('table')->getTableSQL($database, $tableName);
+			$data = $this->load->model('table')->getTableSQL($database, $tableName);
 			$data['code'] = 0;
 		} catch (Exception $e) {
 			$data['code'] = 1;
@@ -239,11 +239,11 @@ class database extends base
 	 */
 	public function backupAction()
 	{
-		$database = $this->_request->get('database');
-		$tableName = $this->_request->get('tableName');
+		$database = $this->request->get('database');
+		$tableName = $this->request->get('tableName');
 		try {
-			$downloadStr = $this->_load->model('table')->backupTable($database, $tableName);
-			$this->_load->library('download')->downloadByString($database . '.' . $tableName . '.sql', $downloadStr);
+			$downloadStr = $this->load->model('table')->backupTable($database, $tableName);
+			_loadClass('\Qii\Library\Download')->downloadByString($database . '.' . $tableName . '.sql', $downloadStr);
 		} catch (Exception $e) {
 			$data['code'] = 1;
 			$data['msg'] = $e->getMessage();
@@ -253,8 +253,8 @@ class database extends base
 
 	public function restoreAction()
 	{
-		$database = $this->_request->post('database');
-		$tableName = $this->_request->post('tableName');
+		$database = $this->request->post('database');
+		$tableName = $this->request->post('tableName');
 		if (!$database || !$tableName || !isset($_FILES['restoreSQL']) ||
 			!isset($_FILES['restoreSQL']['tmp_name']) ||
 			$_FILES['restoreSQL']['tmp_name'] == '' ||
@@ -266,21 +266,21 @@ class database extends base
 			return;
 		}
 		$fileName = $_FILES['restoreSQL']['tmp_name'];
-		$data = $this->_load->model('table')->restore($database, $tableName, $fileName);
+		$data = $this->load->model('table')->restore($database, $tableName, $fileName);
 		echo $this->Json($data);
 	}
 
 	public function creatBasicCodeAction()
 	{
-		$database = $this->_request->get('database');
-		$tableName = $this->_request->get('tableName');
+		$database = $this->request->get('database');
+		$tableName = $this->request->get('tableName');
 		try {
 			if (!$database || !$tableName) {
 				$data['code'] = 1;
 				$data['msg'] = '参数或文件错误';
 				throw new \Exception($data['msg'], $data['code']);
 			}
-			$rules = $this->_load->model('table')->getRules($database, $tableName);
+			$rules = $this->load->model('table')->getRules($database, $tableName);
 			if(!isset($rules['rules']))
 			{
 				$data['code'] = 1;
@@ -288,15 +288,15 @@ class database extends base
 				throw new \Exception($data['msg'], $data['code']);
 			}
 			$privateKeys = 'array(\'' . join('\', \'', array_keys($rules['rules']['pri'])) . '\')';
-			$this->_view->assign('privateKeys', $privateKeys);
-			$code = $this->_load->model('code');
+			$this->view->assign('privateKeys', $privateKeys);
+			$code = $this->load->model('code');
 			$code->setDatabase($database);
 			$code->setClass($tableName);
-			$this->_view->assign('code', $code->output());
-			$sampleCode = $this->_view->fetch('manage/data/code.html');
-			$this->_load->library('download')->downloadByString($tableName . '.php', $sampleCode);
+			$this->view->assign('code', $code->output());
+			$sampleCode = $this->view->fetch('manage/data/code.html');
+			_loadClass('\Qii\Library\Download')->downloadByString($tableName . '.php', $sampleCode);
 		} catch (\Exception $e) {
-			$this->showErrorPage($e->getMessage());
+			echo $e->getMessage();
 		}
 	}
 }

+ 32 - 0
demo/private/controller/base.php

@@ -9,4 +9,36 @@ class base extends \Qii\Base\Controller
     {
         parent::__construct();
     }
+
+	/**
+	 * 初始化view后执行方法
+	 */
+	protected function initView()
+	{
+		$this->view->assign('pathes', _include('../private/configure/path.config.php'));
+	}
+	/**
+	 * 当data中带code的时候,自动添加msg
+	 *
+	 * @param $data
+	 * @return string
+	 */
+	public function jsonEncode($data)
+	{
+		if (empty($data)) return '{}';
+		if (isset($data['code']) && $data['code'] > 0 && !isset($data['msg'])) $data['msg'] = _i($data['code']);
+		return json_encode($data, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE);
+	}
+
+	/**
+	 * 输出JSON数据后直接退出
+	 * @param array $data 数据
+	 * @param bool $exit 是否输出数据以后退出
+	 */
+	public function echoJson($data, $exit = true)
+	{
+		//ob_clean();
+		echo $this->jsonEncode($data);
+		if ($exit) exit();
+	}
 }

+ 1 - 0
demo/private/controller/index.php

@@ -11,6 +11,7 @@ class index extends \Qii\Base\Controller
         $html[] = '<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>示例程序</title><style>ul{list-style:none;}</style></head><body>';
         $html[] = '<ul>示例程序';
         $html[] = '<li>><a href="'. _link('dirs.html') .'">文件管理</a></li>';
+        $html[] = '<li>><a href="'. _link('database.html') .'">数据表管理</a></li>';
         $html[] = '<li>><a href="'. _link('index/dispatch.html') .'">Dispatch</a></li>';
         $html[] = '<li>><a href="'. _link('index/forward.html') .'">Forward</a></li>';
         $html[] = '<li>><a href="'. _link('index/display.html') .'">使用指定目录中的模板</a></li>';

+ 195 - 0
demo/private/helper/globals.php

@@ -0,0 +1,195 @@
+<?php
+
+/**
+ * Class global_helper
+ *
+ * 全局方法,主要使用在模板中
+ */
+namespace helper;
+class globals
+{
+	public static function rules($rule, $name, $validate, $invalidMessage = array(), $extRules = array())
+	{
+		$ruleText = isset($validate[$rule]) ? $validate[$rule] : $rule;
+		$message = isset($invalidMessage[$name]) && isset($invalidMessage[$name][$rule]) ? $invalidMessage[$name][$rule] : '';
+		$ruleValue = isset($extRules[$name]) && isset($extRules[$name][$rule]) ? $extRules[$name][$rule] : '';
+
+		if (in_array($rule, array('length', 'minlength', 'maxlength', 'rangeof', 'sets'))) {
+			return '<label class="w160">' . $ruleText . '&nbsp;<input type="text" class="scinput display_left" name="rules[extRules][' . $name . '][' . $rule . ']" id="rules[extRules][' . $name . '][' . $rule . ']" placeholder="' . $ruleText . '规则" value="' . $ruleValue . '"  />&nbsp;<input type="text" class="scinput" name="rules[invalidMessage][' . $name . '][' . $rule . ']" id="rules[invalidMessage][' . $name . '][' . $rule . ']" placeholder="' . $ruleText . '错误提示" value="' . $message . '" /></label>';
+		}
+		return '<label class="w160">' . $ruleText . '&nbsp;<input type="text" class="scinput" name="rules[invalidMessage][' . $name . '][' . $rule . ']" id="rules[invalidMessage][' . $name . '][' . $rule . ']" placeholder="' . $ruleText . '错误提示" value="' . $message . '" /></label>';
+	}
+
+	/**
+	 * 判断string是否包含html标签
+	 *
+	 * @param $string
+	 * @return bool
+	 */
+	public static function hasHtmlTag($string)
+	{
+		return $string != strip_tags($string);
+	}
+
+	/**
+	 * 生成带参数的URL
+	 *
+	 * @param String $url
+	 * @param Array $param
+	 * @return String
+	 */
+	public static function createURL($url, $param = array())
+	{
+		return \Qii::getInstance('Request')->url($url, $param);
+	}
+
+	/**
+	 * 跳转连接
+	 *
+	 */
+	public static function location($url, $param = array())
+	{
+		$url = self::createURL($url, $param);
+		header('Location: ' . $url);
+		die();
+	}
+
+	/**
+	 * POST数据的时候需要将此参数带上
+	 *
+	 */
+	public static function safeForm()
+	{
+		return;
+	}
+
+	/**
+	 * 设置Cookie
+	 *
+	 */
+	public static function cookie($key, $value = null, $expired = 86400)
+	{
+		if ($value === null) return isset($_COOKIE[$key]) ? $_COOKIE[$key] : '';
+		setcookie($key, $value, time() + $expired, '/');
+	}
+
+	/**
+	 * 获取get值
+	 *
+	 */
+	public static function get($key)
+	{
+		return \Qii::segment($key);
+	}
+
+	/**
+	 * 获取当前连接地址
+	 *
+	 */
+	public static function getCURL()
+	{
+		return \Qii::instance('URI')->getCurrentURL();
+	}
+
+	/**
+	 * 获取网站路径的URL
+	 * @return string
+	 */
+	public static function pathUrl()
+	{
+		return \Qii\Autoloader\Psr4::getInstance()->loadClass('\Qii\Request\Http')->getWebHost() . \Qii\Autoloader\Psr4::getInstance()->loadClass('\Qii\Request\Http')->getPath();
+	}
+
+	/**
+	 * 获取文件的路径
+	 * @param String $file
+	 * @return String
+	 */
+	public static function getFile($file)
+	{
+		return self::pathUrl() . '/' . ltrim($file, '/');
+	}
+
+	/**
+	 * 将绝对地址补成全路径URL
+	 * @param String $url
+	 * @return string
+	 */
+
+	public static function getFullUrl($url = 'index', $ext = '.html')
+	{
+		if (is_array($url)) {
+			$url = join('/', $url);
+		}
+		$url = str_replace('//', '/', $url);
+		$query = parse_url($url);
+		$url = $query['path'];
+		$params = array();
+		if (isset($query['query'])) {
+			parse_str($query['query'], $params);
+		}
+		if ($url == '/') $url = 'index';
+		if ($ext == null) {
+			$ext = '';
+		}
+		$query = count($params) > 0 ? '?' . http_build_query($params) : '';
+		//去掉url中末尾的扩展名,避免重复
+		$url = preg_replace('/(\.' . $ext . ')$/', '', $url);
+		return rtrim(self::pathUrl(), '/') . '/' . ltrim($url, '/') . $ext . (count($params) > 0 ? '?' . http_build_query($params) : '');
+	}
+
+	/**
+	 * 获取Image全路径
+	 * @param String $image
+	 * @return string
+	 */
+	public static function getImage($image)
+	{
+		$image = explode('.', $image);
+		$ext = '.' . array_pop($image);
+		return self::getFullUrl('/static/images/' . join('.', $image), $ext);
+	}
+
+	/**
+	 * 获取Css全路径
+	 * @param String $css
+	 * @return string
+	 */
+	public static function getCss($css)
+	{
+		return self::getFullUrl('/static/css/' . $css, '.css');
+	}
+
+	/**
+	 * 获取JS全路径
+	 * @param String $js
+	 * @return string
+	 */
+	public static function getJS($js)
+	{
+		return self::getFullUrl('/static/js/' . $js, '.js');
+	}
+
+	/**
+	 * 通过制定url路径,不局限于static/images目录返回全路径url
+	 * @param $image
+	 * @return string
+	 */
+	public static function getImageFullUrl($image)
+	{
+		return self::getSourceFullUrl($image);
+	}
+
+	/**
+	 * 通过path直接返回全路径
+	 *
+	 * @param $url
+	 * @return string
+	 */
+	public static function getSourceFullUrl($url)
+	{
+		$ext = pathinfo($url, PATHINFO_EXTENSION);
+		$url = preg_replace('/' . $ext . '$/', '', $url);
+		return self::getFullUrl($url, $ext);
+	}
+}

+ 36 - 0
demo/private/model/code.php

@@ -0,0 +1,36 @@
+<?php
+/**
+ * 数据表的显示规则
+ *
+ * @author Jinhui Zhu<jinhui.zhu@live.cn> 2015-08-23 10:07
+ */
+namespace Model;
+
+use \Qii\Driver\Model;
+use \Qii\Driver\Response;
+
+class code extends Model
+{
+	public $tableName;
+	public $codes = array();
+	public function __construct()
+	{
+		parent::__construct();
+	}
+	public function setDatabase($database)
+	{
+		$this->database = $database;
+	}
+	public function setClass($tableName)
+	{
+		$this->tableName = $tableName;
+	}
+
+	public function output()
+	{
+		if(!$this->tableName) throw new \Exception("未设置类名", __LINE__);
+		$output['className'] = $this->tableName;
+		$output['database'] = $this->database;
+		return $output;
+	}
+}

+ 14 - 14
demo/private/model/table.php

@@ -4,9 +4,9 @@
  *
  * @author Jinhui Zhu<jinhui.zhu@live.cn> 2015-08-23 10:07
  */
-namespace Model;
+namespace model;
 
-use \Qii\Model;
+use \Qii\Driver\Model;
 use \Qii\Driver\Response;
 
 class table extends Model
@@ -20,8 +20,8 @@ class table extends Model
 	}
 	public function getRuleTableInfo()
 	{
-		$table = \Qii\Import::includes('configure/table.rules.config.php');
-		$table['database'] = $this->db->useDB;
+		$table = _include('../private/configure/table.rules.config.php');
+		$table['database'] = $this->db->currentDB;
 		return $table;
 	}
 	public function checkRuleTable()
@@ -42,8 +42,8 @@ class table extends Model
 		$databases = array();
 		$sql = "SHOW DATABASES";
 
-		$this->db->setQuery($sql);
-		while ($row = $this->db->fetch()) {
+		$rs = $this->db->setQuery($sql);
+		while ($row = $rs->fetch()) {
 			if (!in_array($row['Database'], array('information_schema', 'mysql', 'performance_schema', 'test'))) $databases[] = $row['Database'];
 		}
 		return $databases;
@@ -61,8 +61,8 @@ class table extends Model
 		try {
 			$data['code'] = 0;
 			$sql = "SHOW CREATE TABLE {$db}.{$table}";
-			$this->db->setQuery($sql);
-			$row = $this->db->fetch();
+			$rs = $this->db->setQuery($sql);
+			$row = $rs->fetch();
 			$createTableSQL = preg_replace('/AUTO_INCREMENT\=[\d]/', 'AUTO_INCREMENT=1', $row['Create Table']);
 			if ($row) $data['sql'] = str_replace("CREATE TABLE ", "CREATE TABLE IF NOT EXISTS ", $createTableSQL) . ';';
 		} catch (Exception $e) {
@@ -86,8 +86,8 @@ class table extends Model
 		}
 		$tables = array();
 		$sql = "SHOW TABLES IN " . $db;
-		$this->db->setQuery($sql);
-		while ($row = $this->db->fetch()) {
+		$rs = $this->db->setQuery($sql);
+		while ($row = $rs->fetch()) {
 			$tableName = $row['Tables_in_' . $db];
 			$insert = true;
 			if (!empty($table)) $insert = stristr($tableName, $table) ? true : false;
@@ -129,8 +129,8 @@ class table extends Model
 	{
 		$fields = array();
 		$sql = 'DESC ' . $db . '.' . $table;
-		$this->db->setQuery($sql);
-		while ($row = $this->db->fetch()) {
+		$rs = $this->db->setQuery($sql);
+		while ($row = $rs->fetch()) {
 			$val = array();
 			$val['field'] = $row['Field'];
 			$val['null'] = strtolower($row['Null']);
@@ -395,9 +395,9 @@ class table extends Model
 		$data['page']['currentPage'] = $currentPage;
 		$data['page']['totalPage'] = ceil($data['page']['total'] / $pageSize);
 		$sql = "SELECT * FROM {$database}.{$tableName} LIMIT " . $start . ',' . $pageSize;
-		$this->db->setQuery($sql);
+		$rs = $this->db->setQuery($sql);
 		$rulesCount = isset($rules['rules']['end']) && count($rules['rules']['end']) > 0 ? $rules['rules']['end'] : 0;
-		while ($row = $this->db->fetch()) {
+		while ($row = $rs->fetch()) {
 			$val = array();
 			if ($rulesCount > 0) {
 				foreach ($rules['rules']['end'] AS $key => $field) {

+ 15 - 11
demo/private/view/manage/data/add.html

@@ -3,14 +3,19 @@
 <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     <title>数据编辑器</title>
-    <link href="{#helper\globals::getCss("style")#}" rel="stylesheet" type="text/css" />
-    <link href="{#helper\globals::getCss("select")#}" rel="stylesheet" type="text/css" />
-    <script type="text/javascript" src="{#helper\globals::getJs("jquery.min")#}"></script>
-    <script type="text/javascript" src="{#helper\globals::getJs("jquery.idTabs.min")#}"></script>
-    <script type="text/javascript" src="{#helper\globals::getJs("select-ui.min")#}"></script>
-	<script type="text/javascript" src="{#helper\globals::getJs("notify-custom.min")#}"></script>
-    <script type="text/javascript" src="{#helper\globals::getJs('xheditor/xheditor-1.2.2.min')#}"></script>
-    <script type="text/javascript" src="{#helper\globals::getJs('xheditor/xheditor_lang/zh-cn')#}"></script>
+
+
+    <link href="{#_link("static/css/style.css")#}" rel="stylesheet" type="text/css" />
+    <link href="{#_link("static/css/select.css")#}" rel="stylesheet" type="text/css" />
+    <script type="text/javascript" src="{#_link("static/js/jquery.min.js")#}"></script>
+    <script type="text/javascript" src="{#_link("static/js/jquery.idTabs.min.js")#}"></script>
+    <script type="text/javascript" src="{#_link("static/js/select-ui.min.js")#}"></script>
+    <script type="text/javascript" src="{#_link("static/js/jquery.bgiframe.min.js")#}"></script>
+    <script type="text/javascript" src="{#_link("static/js/jquery.multiSelect.js")#}"></script>
+    <script type="text/javascript" src="{#_link("static/js/tips.js")#}"></script>
+	<script type="text/javascript" src="{#_link("static/js/notify-custom.min.js")#}"></script>
+    <script type="text/javascript" src="{#_link('static/js/xheditor/xheditor-1.2.2.min.js')#}"></script>
+    <script type="text/javascript" src="{#_link('static/js/xheditor/xheditor_lang/zh-cn.js')#}"></script>
 	<script>
 	$(document).ready(function(){
 		$("#modifyForm").submit(function()
@@ -55,7 +60,7 @@
     <span>位置:</span>
     <ul class="placeul">
         <li><a href="{#$pathes.index#}">首页</a></li>
-        <li><a href="{#helper\globals::getFullUrl("database/creator")#}?database={#$database#}&tableName={#$tableName#}">规则管理</a></li>
+        <li><a href="{#_link("database/creator")#}?database={#$database#}&tableName={#$tableName#}">规则管理</a></li>
         <li><a href="{#$pathes.table#}?database={#$database#}&tableName={#$tableName#}">数据管理</a></li>
         <li>添加数据</li>
     </ul>
@@ -64,8 +69,7 @@
 <div class="formbody">
 
     <div class="formtitle"><span>基本信息</span></div>
-    <form name="modifyForm" id="modifyForm" method="POST" action="{#helper\globals::getFullUrl("api/database/add", ".json")#}?isAjax=1">
-		{#helper\globals::safeForm()#}
+    <form name="modifyForm" id="modifyForm" method="POST" action="{#_link("api/database/add.json")#}?isAjax=1">
 		<input type="hidden" name="database" value="{#$database#}" id="database" />
 		<input type="hidden" name="tableName" value="{#$tableName#}" id="tableName" />
 	    <ul class="forminfo">

+ 17 - 18
demo/private/view/manage/data/creator.html

@@ -3,16 +3,16 @@
 <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     <title>规则生成</title>
-    <link href="{#helper\globals::getCss("style")#}" rel="stylesheet" type="text/css" />
-    <link href="{#helper\globals::getCss("select")#}" rel="stylesheet" type="text/css" />
-    <link href="{#helper\globals::getCss("jquery.multiSelect")#}" rel="stylesheet" type="text/css" />
-    <script type="text/javascript" src="{#helper\globals::getJs("jquery.min")#}"></script>
-    <script type="text/javascript" src="{#helper\globals::getJs("jquery.idTabs.min")#}"></script>
-    <script type="text/javascript" src="{#helper\globals::getJs("select-ui.min")#}"></script>
-    <script type="text/javascript" src="{#helper\globals::getJs("jquery.bgiframe.min")#}"></script>
-    <script type="text/javascript" src="{#helper\globals::getJs("jquery.multiSelect")#}"></script>
-    <script type="text/javascript" src="{#helper\globals::getJs("tips")#}"></script>
-	<script type="text/javascript" src="{#helper\globals::getJs("notify-custom.min")#}"></script>
+    <link href="{#_link("static/css/style.css")#}" rel="stylesheet" type="text/css" />
+    <link href="{#_link("static/css/select.css")#}" rel="stylesheet" type="text/css" />
+    <link href="{#_link("static/css/jquery.multiSelect.css")#}" rel="stylesheet" type="text/css" />
+    <script type="text/javascript" src="{#_link("static/js/jquery.min.js")#}"></script>
+    <script type="text/javascript" src="{#_link("static/js/jquery.idTabs.min.js")#}"></script>
+    <script type="text/javascript" src="{#_link("static/js/select-ui.min.js")#}"></script>
+    <script type="text/javascript" src="{#_link("static/js/jquery.bgiframe.min.js")#}"></script>
+    <script type="text/javascript" src="{#_link("static/js/jquery.multiSelect.js")#}"></script>
+    <script type="text/javascript" src="{#_link("static/js/tips.js")#}"></script>
+	<script type="text/javascript" src="{#_link("static/js/notify-custom.min.js")#}"></script>
 
     <script type="text/javascript">
             $(document).ready(function(){
@@ -37,13 +37,13 @@
 	            $('input[name="download"]').on('click', function(){
 	            	var database = $('input[name="database"]').val();
 	            	var tableName = $('input[name="tableName"]').val();
-	            	var url = '{#helper\globals::getFullUrl("api/database/downloadConfig", ".json")#}?database='+ database + '&tableName='+ tableName;
+	            	var url = '{#_link("api/database/downloadConfig.json")#}?database='+ database + '&tableName='+ tableName;
 	            	window.location.href = url;
 	            });
                 $('input[name="creatBasicCode"]').on('click', function(){
                     var database = $('input[name="database"]').val();
                     var tableName = $('input[name="tableName"]').val();
-                    var url = '{#helper\globals::getFullUrl("api/database/creatBasicCode", ".json")#}?database='+ database + '&tableName='+ tableName;
+                    var url = '{#_link("api/database/creatBasicCode.json")#}?database='+ database + '&tableName='+ tableName;
                     window.location.href = url;
                 });
             });
@@ -68,26 +68,25 @@
 <div class="rightinfo">
     {#if $loadDatabase#}
     <div class="tools">
-    	<select id="database" name="database" onchange="if(this.value != ''){window.location.href = '{#helper\globals::getFullUrl("database/creator")#}?database='+ $('#database').val()}">
+    	<select id="database" name="database" onchange="if(this.value != ''){window.location.href = '{#_link("database/creator")#}?database='+ $('#database').val()}">
     		<option value="">请选择数据库</option>
             {#foreach key=key item=item from=$databases#}
             <option value="{#$item#}" {#if $database == $item#}selected{#/if#}>{#$item#}</option>
             {#/foreach#}
     	</select>
-        <select name="tableName" onchange="if(this.value != ''){window.location.href = '{#helper\globals::getFullUrl("database/creator")#}?tableName='+ this.value +'&database='+ $('#database').val() }">
+        <select name="tableName" onchange="if(this.value != ''){window.location.href = '{#_link("database/creator")#}?tableName='+ this.value +'&database='+ $('#database').val() }">
             <option>请选择数据表</option>
             {#foreach key=key item=item from=$tables#}
             <option value="{#$item#}" {#if $tableName == $item#}selected{#/if#}>{#$item#}</option>
             {#/foreach#}
         </select>
         {#if $tables|count > 0#}
-        <a href="{#helper\globals::getFullUrl("database/table")#}?database={#$database#}&tableName={#$tableName#}">数据管理</a>
+        <a href="{#_link("database/table")#}?database={#$database#}&tableName={#$tableName#}">数据管理</a>
         {#/if#}
     </div>
     {#/if#}
     {#if $fields#}
-    <form name="creatorForm" id="creatorForm" action="{#helper\globals::getFullUrl("api/database/creator", ".json")#}?isAjax=1" method="POST">
-    {#helper\globals::safeForm()#}
+    <form name="creatorForm" id="creatorForm" action="{#_link("api/database/creator.json")#}?isAjax=1" method="POST">
     <input type="hidden" name="tableName" value="{#$tableName#}"  />
     <input type="hidden" name="database" value="{#$database#}"  />
     <table class="tablelist">
@@ -153,7 +152,7 @@
 <script type="text/javascript">
     $('.tablelist tbody tr:odd').addClass('odd');
     $('input[name="rulesManager"]').on('click', function(){
-    	window.location.href = '{#helper\globals::getFullUrl("database/rules")#}?database={#$database#}&tableName={#$tableName#}';
+    	window.location.href = '{#_link("database/rules")#}?database={#$database#}&tableName={#$tableName#}';
     });
     $('input[name="selectFrontAll"]').on('click', function(){
     	$('.selectFrontFields').prop('checked', $('input[name="selectFrontAll"]').prop('checked'));

+ 0 - 1
demo/private/view/manage/data/table.html

@@ -120,7 +120,6 @@
         var data = {};
         data.database = '{#$database#}';
         data.tableName = '{#$tableName#}';
-        data.security_sid = '{#\Qii::getSecurity()#}'
         $.ajaxFileUpload({
             url : '{#\helper\globals::getFullUrl('api/database/restore')#}?random='+ Math.random(),
             data : data,

+ 5 - 0
src/Base/Action.php

@@ -13,4 +13,9 @@ class Action extends Controller
     {
 
     }
+
+    public function __call($method, $args)
+    {
+    	return call_user_func_array(array($this->controller, $method), $args);
+    }
 }

+ 1 - 1
src/Base/Dispatcher.php

@@ -80,7 +80,7 @@ class Dispatcher
             if (!method_exists($this->actionCls, 'run')) {
                 throw new \Qii\Exceptions\MethodNotFound(\Qii::i(1101, $this->controllerCls->actions[$action] . '->run'), __LINE__);
             }
-            $response = call_user_func_array(array($this->actionCls, 'run'), $funcArgs);
+            $response = call_user_func_array(array($this->actionCls, 'run'), array_slice($funcArgs, 1));
         } else {
             if(method_exists($this->controllerCls, 'initialization'))
             {

+ 8 - 5
src/Driver/Base.php

@@ -178,7 +178,7 @@ class Base
 		preg_match("/(?:\()(.*)(?:\))/i", $str, $matches);
 		$str = $matches[1];
 		$a = explode(",", $str);
-		for($i=0; $i<count($a); $i++)
+		for($i=0; $i< count($a); $i++)
 		{
 			$this->removeQuote($a[$i]);//从字符串中去除单引号
 		}
@@ -343,6 +343,8 @@ class Base
 	 */
 	public function getTable($table)
 	{
+		list($database, $tableName) = array_pad(explode('.', $table), 2, '');
+		if($tableName) return "`{$database}`.`{$tableName}`";
 		return $table;
 	}
 
@@ -373,7 +375,8 @@ class Base
 				}
 				$values[] = $this->setQuote($value);
 			}
-			$this->modelSQL = $sql = "INSERT INTO `{$table}`(`" . join("`, `", $keys) . "`) VALUES('" . join("', '", $values) . "')";
+
+			$this->modelSQL = $sql = "INSERT INTO ". $this->getTable($table) ."(`" . join("`, `", $keys) . "`) VALUES('" . join("', '", $values) . "')";
 			$this->setQuery($sql);
 			$this->cleanData();
 			$this->setError();
@@ -404,7 +407,7 @@ class Base
 				}
 				$values[] = $this->setQuote($value);
 			}
-			$this->modelSQL = $sql = "REPLACE INTO `{$table}`(`" . join("`, `", $keys) . "`) VALUES('" . join("', '", $values) . "')";
+			$this->modelSQL = $sql = "REPLACE INTO ". $this->getTable($table) ."(`" . join("`, `", $keys) . "`) VALUES('" . join("', '", $values) . "')";
 			$rs = $this->setQuery($sql);
 			$this->cleanData();
 			$this->setError();
@@ -447,7 +450,7 @@ class Base
 					$where[] = "`{$key}` = '" . $value . "'";
 				}
 			}
-			$this->modelSQL = $sql = "UPDATE `{$table}` SET " . join(", ", $values) . (sizeof($where) > 0 ? " WHERE " . join(" AND ", $where) : '');
+			$this->modelSQL = $sql = "UPDATE ". $this->getTable($table) ." SET " . join(", ", $values) . (sizeof($where) > 0 ? " WHERE " . join(" AND ", $where) : '');
 			$rs = $this->setQuery($sql);
 			$this->cleanData();
 			$this->setError();
@@ -473,7 +476,7 @@ class Base
 				$where[] = "`{$k}` = '" . $this->setQuote($v) . "'";
 			}
 		}
-		$this->modelSQL = $sql = "DELETE FROM `{$table}`" . (sizeof($where) > 0 ? " WHERE " . join(" AND ", $where) : '');
+		$this->modelSQL = $sql = "DELETE FROM ". $this->getTable($table) ." " . (sizeof($where) > 0 ? " WHERE " . join(" AND ", $where) : '');
 		$rs = $this->query($sql);
 		$this->cleanData();
 		$this->setError();

+ 7 - 3
src/Driver/Easy.php

@@ -85,7 +85,7 @@ class Easy
 
 	public function __construct()
 	{
-		$this->db = \Qii\Autoloader\Psr4::loadClass('Qii\Model')->db;
+		$this->db = \Qii\Autoloader\Psr4::getInstance()->loadClass('\Qii\Driver\Model')->db;
 		$this->clean();
 		return $this;
 	}
@@ -236,7 +236,7 @@ class Easy
 	final protected function validateFields($rules)
 	{
 		if (empty($rules)) return true;
-		$validateCls = _loadClass('Qii_Library_Validate');
+		$validateCls = _loadClass('\Qii\Library\Validate');
 		$result = $validateCls->verify($this->fields->getValues(), $rules, $this->easyRules->getInvalidMessage());
 		if ($result === true) {
 			return true;
@@ -299,7 +299,11 @@ class Easy
 			}
 			if ($this->fields->isField($key)) $where[] = "`{$key}` = '" . $this->db->setQuote($this->fields->getField($key)) . "'";
 		}
-		$result = (array)$this->db->limit(1)->where(join(' AND ', $where))->select($this->getTableName());
+		$result = $this->db->limit(1)->where(join(' AND ', $where))->select($this->getTableName());
+		if(!$result)
+		{
+			$result = array();
+		}
 		if ($this->db->isError()) {
 			$this->_response = $this->db->getResponse();
 		}