From 2c651128f29d369b00f111bf814b0b29d21f1c60 Mon Sep 17 00:00:00 2001 From: yuan1994 Date: Wed, 8 Mar 2017 15:13:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0ThinkPHP=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E4=B8=BA5.0.7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/admin/Controller.php | 7 +- application/admin/common.php | 88 ++- application/admin/controller/AdminUser.php | 6 +- application/admin/controller/LoginLog.php | 8 +- application/admin/controller/NodeMap.php | 2 +- application/admin/view/admin_group/index.html | 2 +- application/admin/view/index/index.html | 2 +- application/admin/view/node_map/index.html | 2 +- application/admin/widget/Index.php | 2 +- application/common/model/LoginLog.php | 4 +- application/database.php | 2 + composer.lock | 26 +- extend/Generate.php | 4 +- public/static/admin/js/app.js | 3 +- thinkphp/.travis.yml | 2 - thinkphp/README.md | 4 +- thinkphp/base.php | 4 +- thinkphp/composer.json | 3 +- thinkphp/console.php | 4 +- thinkphp/convention.php | 44 +- thinkphp/helper.php | 44 +- thinkphp/lang/zh-cn.php | 4 +- thinkphp/library/think/App.php | 28 +- thinkphp/library/think/Build.php | 2 +- thinkphp/library/think/Cache.php | 14 +- thinkphp/library/think/Collection.php | 8 +- thinkphp/library/think/Config.php | 8 +- thinkphp/library/think/Console.php | 11 +- thinkphp/library/think/Controller.php | 5 +- thinkphp/library/think/Cookie.php | 4 +- thinkphp/library/think/Db.php | 20 +- thinkphp/library/think/Debug.php | 10 +- thinkphp/library/think/Env.php | 2 +- thinkphp/library/think/Error.php | 2 +- thinkphp/library/think/Exception.php | 2 +- thinkphp/library/think/File.php | 2 +- thinkphp/library/think/Hook.php | 7 +- thinkphp/library/think/Lang.php | 6 +- thinkphp/library/think/Loader.php | 47 +- thinkphp/library/think/Log.php | 2 +- thinkphp/library/think/Model.php | 657 ++++++++++++----- thinkphp/library/think/Paginator.php | 153 +++- thinkphp/library/think/Process.php | 112 +-- thinkphp/library/think/Request.php | 64 +- thinkphp/library/think/Response.php | 9 +- thinkphp/library/think/Route.php | 50 +- thinkphp/library/think/Session.php | 12 +- thinkphp/library/think/Template.php | 9 +- thinkphp/library/think/Url.php | 32 +- thinkphp/library/think/Validate.php | 33 +- thinkphp/library/think/View.php | 7 +- thinkphp/library/think/cache/Driver.php | 4 +- thinkphp/library/think/cache/driver/File.php | 7 +- thinkphp/library/think/cache/driver/Lite.php | 4 +- .../library/think/cache/driver/Memcache.php | 5 +- .../library/think/cache/driver/Memcached.php | 4 +- thinkphp/library/think/cache/driver/Redis.php | 4 +- .../library/think/cache/driver/Sqlite.php | 5 +- .../library/think/cache/driver/Wincache.php | 7 +- .../library/think/cache/driver/Xcache.php | 5 +- thinkphp/library/think/config/driver/Ini.php | 2 +- thinkphp/library/think/config/driver/Json.php | 2 +- thinkphp/library/think/config/driver/Xml.php | 2 +- thinkphp/library/think/console/Input.php | 2 +- .../library/think/console/command/Help.php | 3 +- .../library/think/console/command/Lists.php | 2 +- .../console/command/optimize/Autoload.php | 2 +- .../think/console/command/optimize/Schema.php | 2 +- thinkphp/library/think/console/output/Ask.php | 2 +- .../think/console/output/driver/Console.php | 16 +- thinkphp/library/think/controller/Rest.php | 4 +- thinkphp/library/think/controller/Yar.php | 2 +- thinkphp/library/think/db/Builder.php | 53 +- thinkphp/library/think/db/Connection.php | 277 +++++--- thinkphp/library/think/db/Query.php | 660 ++++++++++++++---- thinkphp/library/think/db/builder/Mysql.php | 5 +- thinkphp/library/think/db/builder/Pgsql.php | 5 +- thinkphp/library/think/db/builder/Sqlite.php | 5 +- thinkphp/library/think/db/builder/Sqlsrv.php | 3 + thinkphp/library/think/db/connector/Mysql.php | 27 +- thinkphp/library/think/db/connector/Pgsql.php | 3 +- .../library/think/db/connector/Sqlite.php | 4 +- .../library/think/db/connector/Sqlsrv.php | 2 +- .../think/db/exception/BindParamException.php | 4 +- .../db/exception/DataNotFoundException.php | 10 +- .../db/exception/ModelNotFoundException.php | 10 +- .../library/think/exception/DbException.php | 2 +- .../think/exception/ErrorException.php | 2 +- .../library/think/exception/PDOException.php | 4 +- .../exception/RouteNotFoundException.php | 2 - thinkphp/library/think/log/driver/Socket.php | 8 +- thinkphp/library/think/model/Collection.php | 79 +++ thinkphp/library/think/model/Merge.php | 79 ++- thinkphp/library/think/model/Pivot.php | 4 +- thinkphp/library/think/model/Relation.php | 39 +- .../think/model/relation/BelongsTo.php | 94 ++- .../think/model/relation/BelongsToMany.php | 205 ++++-- .../library/think/model/relation/HasMany.php | 164 +++-- .../think/model/relation/HasManyThrough.php | 88 ++- .../library/think/model/relation/HasOne.php | 115 +-- .../think/model/relation/MorphMany.php | 146 +++- .../library/think/model/relation/MorphTo.php | 122 +++- .../library/think/model/relation/OneToOne.php | 148 ++-- .../library/think/paginator/Collection.php | 74 -- .../think/paginator/driver/Bootstrap.php | 6 +- thinkphp/library/think/process/Builder.php | 7 +- thinkphp/library/think/process/Utils.php | 4 +- .../exception/{Faild.php => Failed.php} | 1 - .../think/process/exception/Timeout.php | 2 +- .../library/think/process/pipes/Pipes.php | 3 +- thinkphp/library/think/process/pipes/Unix.php | 20 +- .../library/think/process/pipes/Windows.php | 8 +- thinkphp/library/think/response/Json.php | 2 +- thinkphp/library/think/response/Jsonp.php | 2 +- thinkphp/library/think/response/Redirect.php | 2 +- thinkphp/library/think/response/View.php | 2 +- thinkphp/library/think/response/Xml.php | 2 +- .../library/think/session/driver/Memcache.php | 2 +- .../think/session/driver/Memcached.php | 2 +- .../library/think/session/driver/Redis.php | 2 +- thinkphp/library/think/template/TagLib.php | 4 +- .../library/think/template/driver/File.php | 2 +- thinkphp/library/think/template/taglib/Cx.php | 12 +- thinkphp/library/think/view/driver/Php.php | 2 +- thinkphp/library/think/view/driver/Think.php | 2 +- thinkphp/library/traits/controller/Jump.php | 5 +- thinkphp/library/traits/model/SoftDelete.php | 8 +- thinkphp/library/traits/think/Instance.php | 4 +- thinkphp/start.php | 2 +- thinkphp/tpl/think_exception.tpl | 58 +- vendor/composer/installed.json | 218 +++--- vendor/swiftmailer/swiftmailer/.gitignore | 6 +- vendor/swiftmailer/swiftmailer/CHANGES | 21 + vendor/swiftmailer/swiftmailer/VERSION | 2 +- vendor/swiftmailer/swiftmailer/composer.json | 3 +- .../swiftmailer/swiftmailer/doc/overview.rst | 2 - .../swiftmailer/swiftmailer/doc/sending.rst | 44 +- .../lib/classes/Swift/CharacterReader.php | 4 +- .../Swift/CharacterReader/Utf8Reader.php | 32 +- .../CharacterStream/ArrayCharacterStream.php | 2 +- .../lib/classes/Swift/Encoder/QpEncoder.php | 6 +- .../lib/classes/Swift/Encoding.php | 2 - .../lib/classes/Swift/Events/CommandEvent.php | 4 +- .../lib/classes/Swift/MailTransport.php | 2 + .../swiftmailer/lib/classes/Swift/Message.php | 8 +- .../Swift/Mime/Headers/AbstractHeader.php | 4 +- .../classes/Swift/Mime/Headers/DateHeader.php | 2 +- .../Swift/Mime/Headers/MailboxHeader.php | 8 +- .../Mime/Headers/ParameterizedHeader.php | 4 +- .../classes/Swift/Mime/Headers/PathHeader.php | 2 +- .../lib/classes/Swift/Mime/MimePart.php | 2 +- .../lib/classes/Swift/Mime/SimpleMessage.php | 36 +- .../classes/Swift/Mime/SimpleMimeEntity.php | 22 +- .../Swift/Plugins/ImpersonatePlugin.php | 2 +- .../classes/Swift/Plugins/MessageLogger.php | 4 +- .../classes/Swift/Plugins/ThrottlerPlugin.php | 8 +- .../lib/classes/Swift/Signers/DKIMSigner.php | 62 +- .../classes/Swift/Signers/DomainKeySigner.php | 16 +- .../lib/classes/Swift/Signers/SMimeSigner.php | 6 +- .../ByteArrayReplacementFilter.php | 2 +- .../StreamFilters/StringReplacementFilter.php | 4 + .../Swift/Transport/AbstractSmtpTransport.php | 7 +- .../Esmtp/Auth/NTLMAuthenticator.php | 11 +- .../Swift/Transport/EsmtpTransport.php | 6 +- .../classes/Swift/Transport/MailTransport.php | 43 +- .../classes/Swift/Transport/StreamBuffer.php | 2 +- .../lib/dependency_maps/mime_deps.php | 2 +- .../swiftmailer/lib/preferences.php | 2 +- .../swiftmailer/swiftmailer/phpunit.xml.dist | 4 +- .../tests/SwiftMailerSmokeTestCase.php | 2 +- .../tests/acceptance.conf.php.default | 7 - .../FileByteStreamAcceptanceTest.php | 48 +- ...leCharacterReaderFactoryAcceptanceTest.php | 2 +- .../DependencyContainerAcceptanceTest.php | 4 + .../Encoder/Base64EncoderAcceptanceTest.php | 2 +- .../Swift/Encoder/QpEncoderAcceptanceTest.php | 2 +- .../Encoder/Rfc2231EncoderAcceptanceTest.php | 2 +- .../KeyCache/ArrayKeyCacheAcceptanceTest.php | 2 +- .../KeyCache/DiskKeyCacheAcceptanceTest.php | 14 +- .../Swift/MessageAcceptanceTest.php | 2 - .../Swift/Mime/AttachmentAcceptanceTest.php | 4 +- .../Base64ContentEncoderAcceptanceTest.php | 2 +- .../NativeQpContentEncoderAcceptanceTest.php | 4 +- .../PlainContentEncoderAcceptanceTest.php | 2 +- .../QpContentEncoderAcceptanceTest.php | 4 +- .../Swift/Mime/EmbeddedFileAcceptanceTest.php | 4 +- .../Base64HeaderEncoderAcceptanceTest.php | 2 +- .../Swift/Mime/MimePartAcceptanceTest.php | 4 +- .../Mime/SimpleMessageAcceptanceTest.php | 4 +- .../AbstractStreamBufferAcceptanceTest.php | 11 +- .../BasicSocketAcceptanceTest.php | 5 +- .../StreamBuffer/ProcessAcceptanceTest.php | 5 +- .../StreamBuffer/SocketTimeoutTest.php | 6 +- .../StreamBuffer/SslSocketAcceptanceTest.php | 5 +- .../StreamBuffer/TlsSocketAcceptanceTest.php | 5 +- .../tests/bug/Swift/Bug118Test.php | 2 +- .../tests/bug/Swift/Bug206Test.php | 2 +- .../swiftmailer/tests/bug/Swift/Bug34Test.php | 2 +- .../swiftmailer/tests/bug/Swift/Bug35Test.php | 2 +- .../swiftmailer/tests/bug/Swift/Bug38Test.php | 4 +- .../swiftmailer/tests/bug/Swift/Bug51Test.php | 19 +- .../swiftmailer/tests/bug/Swift/Bug71Test.php | 2 +- .../swiftmailer/tests/bug/Swift/Bug76Test.php | 19 +- ...FileByteStreamConsecutiveReadCallsTest.php | 2 +- .../tests/fixtures/MimeEntityFixture.php | 8 + .../smoke/Swift/Smoke/AttachmentSmokeTest.php | 2 +- .../Smoke/HtmlWithAttachmentSmokeTest.php | 2 +- .../Swift/Smoke/InternationalSmokeTest.php | 2 +- .../Swift/ByteStream/ArrayByteStreamTest.php | 21 +- .../CharacterReader/UsAsciiReaderTest.php | 2 +- .../Swift/CharacterReader/Utf8ReaderTest.php | 2 +- .../ArrayCharacterStreamTest.php | 16 +- .../unit/Swift/DependencyContainerTest.php | 6 +- .../unit/Swift/Encoder/Base64EncoderTest.php | 2 +- .../unit/Swift/Encoder/QpEncoderTest.php | 2 - .../unit/Swift/Events/CommandEventTest.php | 4 +- .../unit/Swift/Events/EventObjectTest.php | 2 - .../unit/Swift/Events/ResponseEventTest.php | 4 +- .../tests/unit/Swift/Events/SendEventTest.php | 6 +- .../Events/SimpleEventDispatcherTest.php | 36 +- .../Swift/Events/TransportChangeEventTest.php | 4 +- .../Events/TransportExceptionEventTest.php | 4 +- .../unit/Swift/KeyCache/ArrayKeyCacheTest.php | 8 +- .../SimpleKeyCacheInputStreamTest.php | 6 +- .../tests/unit/Swift/MailerTest.php | 2 - .../tests/unit/Swift/MessageTest.php | 1 - .../Swift/Mime/AbstractMimeEntityTest.php | 6 +- .../tests/unit/Swift/Mime/AttachmentTest.php | 2 - .../Base64ContentEncoderTest.php | 2 +- .../PlainContentEncoderTest.php | 2 - .../ContentEncoder/QpContentEncoderTest.php | 2 - .../unit/Swift/Mime/EmbeddedFileTest.php | 2 - .../HeaderEncoder/QpHeaderEncoderTest.php | 2 - .../Mime/Headers/ParameterizedHeaderTest.php | 2 - .../tests/unit/Swift/Mime/MimePartTest.php | 4 +- .../Swift/Mime/SimpleHeaderFactoryTest.php | 8 +- .../unit/Swift/Mime/SimpleHeaderSetTest.php | 6 +- .../unit/Swift/Mime/SimpleMessageTest.php | 2 - .../unit/Swift/Mime/SimpleMimeEntityTest.php | 2 - .../Swift/Plugins/AntiFloodPluginTest.php | 6 +- .../Plugins/BandwidthMonitorPluginTest.php | 6 +- .../Swift/Plugins/DecoratorPluginTest.php | 2 - .../unit/Swift/Plugins/LoggerPluginTest.php | 6 +- .../Swift/Plugins/PopBeforeSmtpPluginTest.php | 6 +- .../Swift/Plugins/RedirectingPluginTest.php | 2 - .../unit/Swift/Plugins/ReporterPluginTest.php | 2 - .../Plugins/Reporters/HitReporterTest.php | 4 +- .../Plugins/Reporters/HtmlReporterTest.php | 4 +- .../Swift/Plugins/ThrottlerPluginTest.php | 2 - .../unit/Swift/Signers/DKIMSignerTest.php | 14 +- .../unit/Swift/Signers/OpenDKIMSignerTest.php | 2 +- .../unit/Swift/Signers/SMimeSignerTest.php | 2 +- .../ByteArrayReplacementFilterTest.php | 2 - .../StringReplacementFilterFactoryTest.php | 2 - .../StringReplacementFilterTest.php | 6 +- .../AbstractSmtpEventSupportTest.php | 2 - .../Esmtp/Auth/CramMd5AuthenticatorTest.php | 4 +- .../Esmtp/Auth/LoginAuthenticatorTest.php | 4 +- .../Esmtp/Auth/NTLMAuthenticatorTest.php | 78 +-- .../Esmtp/Auth/PlainAuthenticatorTest.php | 4 +- .../Swift/Transport/Esmtp/AuthHandlerTest.php | 4 +- .../EsmtpTransport/ExtensionSupportTest.php | 1 + .../Swift/Transport/EsmtpTransportTest.php | 3 +- .../Swift/Transport/FailoverTransportTest.php | 2 - .../Transport/LoadBalancedTransportTest.php | 6 +- .../Swift/Transport/MailTransportTest.php | 34 +- .../Swift/Transport/SendmailTransportTest.php | 3 +- .../unit/Swift/Transport/StreamBufferTest.php | 6 +- 268 files changed, 3493 insertions(+), 2015 deletions(-) create mode 100644 thinkphp/library/think/model/Collection.php delete mode 100644 thinkphp/library/think/paginator/Collection.php rename thinkphp/library/think/process/exception/{Faild.php => Failed.php} (99%) diff --git a/application/admin/Controller.php b/application/admin/Controller.php index a7bd627..3cac7d2 100644 --- a/application/admin/Controller.php +++ b/application/admin/Controller.php @@ -288,6 +288,7 @@ protected function filterId($filterData, $error = '该记录不能执行此操 * $map['_order_by'] 可强制设置排序字段(field asc|desc[,filed2 asc|desc...]或者false) * $map['_paginate'] 是否开启分页,传入false可以关闭分页 * $map['_model'] 可强制指定模型 + * $map['_func'] 匿名函数,可以给模型设置属性,比如关联,alias,function ($model) {$model->alias('table')->join(...)} * * @param Model|Db $model 数据对象 * @param array $map 过滤条件 @@ -300,13 +301,17 @@ protected function filterId($filterData, $error = '该记录不能执行此操 protected function datalist($model, $map, $field = null, $sortBy = '', $asc = false, $return = false, $paginate = true) { // 私有字段,指定特殊条件,查询时要删除 - $protectField = ['_table', '_relation', '_field', '_order_by', '_paginate', '_model']; + $protectField = ['_table', '_relation', '_field', '_order_by', '_paginate', '_model', '_func']; // 通过过滤器指定模型 if (isset($map['_model'])) { $model = $map['_model']; } + if (isset($map['_func']) && ($map['_func'] instanceof \Closure)) { + call_user_func_array($map['_func'], [$model]); + } + // 排序字段 默认为主键名 $order = $this->request->param('_order') ?: (empty($sortBy) ? $model->getPk() : $sortBy); diff --git a/application/admin/common.php b/application/admin/common.php index 9f06eac..6be2423 100644 --- a/application/admin/common.php +++ b/application/admin/common.php @@ -240,11 +240,13 @@ function reset_by_key($arr, $key) /** * 节点遍历 - * @param $list + * + * @param $list * @param string $pk * @param string $pid * @param string $child - * @param int $root + * @param int $root + * * @return array */ function list_to_tree($list, $pk = 'id', $pid = 'pid', $child = '_child', $root = 0) @@ -255,10 +257,16 @@ function list_to_tree($list, $pk = 'id', $pid = 'pid', $child = '_child', $root // 创建基于主键的数组引用 $refer = []; foreach ($list as $key => $data) { + if ($data instanceof \think\Model) { + $list[$key] = $data->toArray(); + } $refer[$data[$pk]] =& $list[$key]; } foreach ($list as $key => $data) { // 判断是否存在parent + if (!isset($list[$key][$child])) { + $list[$key][$child] = []; + } $parentId = $data[$pid]; if ($root == $parentId) { $tree[] =& $list[$key]; @@ -418,3 +426,79 @@ function format_bytes($size, $delimiter = '') return round($size, 2) . $delimiter . $units[$i]; } + +/** + * 生成一定长度的UUID + * + * @param int $length + * + * @return string + */ +function get_uuid($length = 16) +{ + mt_srand((double)microtime()*10000); + $uuid = sprintf('%04X%04X-%04X-%04X-%04X-%04X%04X%04X', mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(16384, 20479), mt_rand(32768, 49151), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535)); + $str = base64_encode($uuid); + return substr($str, mt_rand(0, strlen($str) - $length), $length); +} + +/** + * 根据模型名称获取模型 + * + * @param $modelName + * + * @return \think\Model|\think\db\Query + */ +function get_model($modelName) +{ + if (false !== strpos($modelName, '\\')) { + // 指定模型类 + $db = new $modelName; + } else { + try { + $db = \think\Loader::model($modelName); + } catch (\think\exception\ClassNotFoundException $e) { + $db = \think\Db::name($modelName); + } + } + + return $db; +} + +/** + * 验证规则扩展 + */ +\think\Validate::extend([ + // 验证字段是否在模型中存在 + 'checkExist' => function($value, $rule, $data, $field) { + if (is_string($rule)) { + $rule = explode(',', $rule); + } + $db = get_model($rule[0]); + $key = isset($rule[1]) ? $rule[1] : $field; + + if (strpos($key, '^')) { + // 支持多个字段验证 + $fields = explode('^', $key); + foreach ($fields as $key) { + $map[$key] = $data[$key]; + } + } elseif (strpos($key, '=')) { + parse_str($key, $map); + } else { + $map[$key] = $data[$field]; + } + + $pk = strval(isset($rule[3]) ? $rule[3] : $db->getPk()); + if (isset($rule[2])) { + $map[$pk] = ['neq', $rule[2]]; + } elseif (isset($data[$pk])) { + $map[$pk] = ['neq', $data[$pk]]; + } + + if ($db->where($map)->field($pk)->find()) { + return true; + } + return false; + } +]); diff --git a/application/admin/controller/AdminUser.php b/application/admin/controller/AdminUser.php index eb91064..865163e 100644 --- a/application/admin/controller/AdminUser.php +++ b/application/admin/controller/AdminUser.php @@ -35,13 +35,13 @@ protected function filter(&$map) $map['realname'] = ["like", "%" . $this->request->param('realname') . "%"]; } if ($this->request->param('account')) { - $map['realname'] = ["like", "%" . $this->request->param('account') . "%"]; + $map['account'] = ["like", "%" . $this->request->param('account') . "%"]; } if ($this->request->param('email')) { - $map['realname'] = ["like", "%" . $this->request->param('email') . "%"]; + $map['email'] = ["like", "%" . $this->request->param('email') . "%"]; } if ($this->request->param('mobile')) { - $map['realname'] = ["like", "%" . $this->request->param('mobile') . "%"]; + $map['mobile'] = ["like", "%" . $this->request->param('mobile') . "%"]; } } diff --git a/application/admin/controller/LoginLog.php b/application/admin/controller/LoginLog.php index 26655dc..b4a9755 100644 --- a/application/admin/controller/LoginLog.php +++ b/application/admin/controller/LoginLog.php @@ -17,6 +17,8 @@ \think\Loader::import('controller/Controller', \think\Config::get('traits_path') , EXT); use app\admin\Controller; +use app\common\model\LoginLog as ModelLoginLog; +use app\common\model\AdminUser as ModelAdminUser; class LoginLog extends Controller { @@ -42,7 +44,9 @@ protected function filter(&$map) // 设置属性 $map['_table'] = "login_log"; - $map['_relation'] = "user"; $map['_order_by'] = "login_log.id desc"; + $map['_func'] = function (ModelLoginLog $model) use ($map) { + $model->alias($map['_table'])->join(ModelAdminUser::getTable() . ' user', 'login_log.uid = user.id'); + }; } -} \ No newline at end of file +} diff --git a/application/admin/controller/NodeMap.php b/application/admin/controller/NodeMap.php index 4125ee1..ccaa915 100644 --- a/application/admin/controller/NodeMap.php +++ b/application/admin/controller/NodeMap.php @@ -31,7 +31,7 @@ class NodeMap extends Controller protected function filter(&$map) { if ($this->request->param("map")) { - $map['map'] = ["like", "%" . $this->request->param("map") . "%"]; + $map['action|module|controller'] = ["like", "%" . $this->request->param("map") . "%"]; } if ($this->request->param("comment")) { $map['comment'] = ["like", "%" . $this->request->param("comment") . "%"]; diff --git a/application/admin/view/admin_group/index.html b/application/admin/view/admin_group/index.html index b41508c..1075bb7 100755 --- a/application/admin/view/admin_group/index.html +++ b/application/admin/view/admin_group/index.html @@ -33,7 +33,7 @@
{$page}
{/block} -{block name='script'}} +{block name='script'} diff --git a/application/admin/view/index/index.html b/application/admin/view/index/index.html index a71a3e9..16e1000 100755 --- a/application/admin/view/index/index.html +++ b/application/admin/view/index/index.html @@ -44,7 +44,7 @@
  • 退出
  • -
  • 1
  • +
  • 1