# 0551shengteng **Repository Path**: adymilk/0551shengteng ## Basic Information - **Project Name**: 0551shengteng - **Description**: 合肥盛腾网站 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-11-21 - **Last Updated**: 2024-05-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # H-UI+TP5 档案管理系统 ## 运行环境要求 - php 5.4 - composer 依赖包管理工具 - git ## 安装步骤 1、下载项目代码道本地 `git clone `后面接项目地址 2、在项目根目录下 安装依赖包 `composer uodate` 3、创建数据库名字并且导入数据库表结构(.sql)文件 > 数据库名在 `项目根目录/application/datebase.php` 查看。(.sql文件在项目根目录) ## 功能模块介绍 - 用户权限管理(不同用户可以有不同的访问权限) - 消息通知管理(新消息声音通知和桌面弹窗) ### Q:遇到的问题 - 1.1 上传图片过大,无法上传 ### A:解决方法 1.1 修改 `php.ini` 配置 - upload_max_filesize = 200M - post_max_size = 200M - memory_limit = 200M - 重启apache ### Q:TP5 官方多图上传文档无法使用 ```` public function upload(){ // 获取表单上传文件 $files = request()->file('image'); foreach($files as $file){ // 移动到框架应用根目录/public/uploads/ 目录下 $info = $file->move(ROOT_PATH . 'public' . DS . 'uploads'); if($info){ // 成功上传后 获取上传信息 // 输出 jpg echo $info->getExtension(); // 输出 42a79759f284b767dfcb2a0197904287.jpg echo $info->getFilename(); }else{ // 上传失败获取错误信息 echo $file->getError(); } } } ```` ### A:可改为如下即可 ```` public function upload(){ // 获取表单上传文件 $files = request()->file('image'); foreach($files as $file){ // 移动到框架应用根目录/public/uploads/ 目录下 $info = $file->move(ROOT_PATH . 'public' . DS . 'uploads'); if($info){ //注意此处 echo 会导致循环中断,不可使用 }else{ // 上传失败获取错误信息 echo $file->getError(); } } } ```` ### 数据分组换行输出 ````
{volist name="list" id="vo" mod="6"}
{eq name="mod" value="2"}
{/eq} {/volist}
```` - 第1行的 mod 是指,你要显示几条记录; - 第2行的 value 是到了第几个换行(从0开始,0表示第1个,1表示第2个...), - 这里是3,也就是到了第4个就换行。即:第5条记录开始是第2行。 - [详细介绍](http://www.thinkphp.cn/topic/5890.html) ### Q:图片上传裁剪 ### Q:tp5分页 变量名必须是 $list吗? ``` {$list->render()} ``` #### A: ### taskList - 数据表数据创建时间和修改时间要分开 - 修改上传的图片之前删除旧照片 - 优化新闻修改重复代码 > Q:tp5 如何验证用户是否登录? > A: - TP提供了一个自动执行的函数_initialize(), 你创建一个公共控制器CommonController.php文件 ```php public function _initialize() { if (!Session::has('curUser','think')){ $this->error('请先登录!','User/login',null,1); } } ``` - 之后所有的控制器都继承这个公共控制器 ```php class Index extends Common { public function index(){ } } ``` # tp5 多文件上传问题!只有一张图片 解决办法:修改框架thinkphp\library\think\File.php文件中,大概在348行开始。 [github在此处已经表明修改部分](https://github.com/adymilk/ShengTeng-Group/commit/1aa29add9f6b065c4d1fcad05f6ad0903901698a) [详情点击这里查看解决方法](https://www.csweigou.com/article/1858.html) # Q:解决后台添加案例用户可能重复提交的问题。 ## A:解决方案 - 用隐藏体按钮,然后弹出一个模态框提示信息:数据真正提交中,请稍等 # url中文传参问题 url直接拼接中文会引起乱码问题,可用此方法解决 ``` ?c=city&city= ``` # banner图片上传思路图 选择图片->ajax提交到后台->移动到指定目录 ## 导出数据到表格 ```php /** * excel表格导出 * @param string $fileName 文件名称 * @param array $headArr 表头名称 * @param array $data 要导出的数据 * @throws PHPExcel_Exception * @throws PHPExcel_Reader_Exception * @throws PHPExcel_Writer_Exception */ function excelExport($fileName,$headArr,$data) { $fileName .= "_" . date("Y_m_d", Request::instance()->time()) . ".xls"; $objPHPExcel = new \PHPExcel(); $objPHPExcel->getProperties(); $key = ord("A"); // 设置表头 foreach ($headArr as $v) { $colum = chr($key); $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '1', $v); $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '1', $v); $key += 1; } $column = 2; $objActSheet = $objPHPExcel->getActiveSheet(); foreach ($data as $key => $rows) { // 行写入 $span = ord("A"); foreach ($rows as $keyName => $value) { // 列写入 $objActSheet->setCellValue(chr($span) . $column, $value); $span++; } $column++; } $fileName = iconv("utf-8", "gb2312", $fileName); // 重命名表 $objPHPExcel->setActiveSheetIndex(0); // 设置活动单指数到第一个表,所以Excel打开这是第一个表 header('Content-Type: application/vnd.ms-excel'); header("Content-Disposition: attachment;filename='$fileName'"); header('Cache-Control: max-age=0'); $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); // 文件通过浏览器下载 exit(); } ``` ## 发送邮件 - 第一步:使用 `composer` 安装 `phpmailer` 扩展 ```php composer require phpmailer/phpmailer ``` - 编写公共方法 ```php /** * 发送邮件方法 * @param string $to:接收者邮箱地址 * @param string $title:邮件的标题 * @param string $content:邮件内容 * @return boolean true:发送成功 false:发送失败 */ function sendMail($to,$title,$content){ //实例化PHPMailer核心类 $mail = new PHPMailer(); //是否启用smtp的debug进行调试 开发环境建议开启 生产环境注释掉即可 默认关闭debug调试模式 $mail->SMTPDebug = 1; //使用smtp鉴权方式发送邮件 $mail->isSMTP(); //smtp需要鉴权 这个必须是true $mail->SMTPAuth=true; //链接qq域名邮箱的服务器地址 $mail->Host = 'smtp.qq.com'; //设置使用ssl加密方式登录鉴权 $mail->SMTPSecure = 'ssl'; //设置ssl连接smtp服务器的远程服务器端口号,以前的默认是25,但是现在新的好像已经不可用了 可选465或587 $mail->Port = 465; //设置smtp的helo消息头 这个可有可无 内容任意 $mail->Helo = 'Hello smtp.qq.com Server'; //设置发件人的主机域 可有可无 默认为localhost 内容任意,建议使用你的域名 $mail->Hostname = 'localhost'; //设置发送的邮件的编码 可选GB2312 我喜欢utf-8 据说utf8在某些客户端收信下会乱码 $mail->CharSet = 'UTF-8'; //设置发件人姓名(昵称) 任意内容,显示在收件人邮件的发件人邮箱地址前的发件人姓名 $mail->FromName = '亲爱的管理员'; //smtp登录的账号 这里填入字符串格式的qq号即可 $mail->Username ='924114103'; //smtp登录的密码 使用生成的授权码 你的最新的授权码 $mail->Password = 'lfwhrsdxqobhbddc'; //设置发件人邮箱地址 这里填入上述提到的“发件人邮箱” $mail->From = '924114103@qq.com'; //邮件正文是否为html编码 注意此处是一个方法 不再是属性 true或false $mail->isHTML(true); //设置收件人邮箱地址 该方法有两个参数 第一个参数为收件人邮箱地址 第二参数为给该地址设置的昵称 不同的邮箱系统会自动进行处理变动 这里第二个参数的意义不大 $mail->addAddress($to,'测试通知'); //添加多个收件人 则多次调用方法即可 // $mail->addAddress('xxx@qq.com','lsgo在线通知'); //添加该邮件的主题 $mail->Subject = $title; //添加邮件正文 上方将isHTML设置成了true,则可以是完整的html字符串 如:使用file_get_contents函数读取本地的html文件 $mail->Body = $content; //为该邮件添加附件 该方法也有两个参数 第一个参数为附件存放的目录(相对目录、或绝对目录均可) 第二参数为在邮件附件中该附件的名称 // $mail->addAttachment('./d.jpg','mm.jpg'); //同样该方法可以多次调用 上传多个附件 // $mail->addAttachment('./Jlib-1.1.0.js','Jlib.js'); } - 函数调用 ``` ## tp5 上传文件后反斜杠导致图片路径错误问题 tp5 在WINDWOS环境下上传图片、文件的路径都是反斜杠(\)形式保存到数据的,需要转成斜杠(/) 比如上传后的图片路径`20180914\a6587063b2abbda94058120dbf1c7dad.png` 要转为:`20180914/a6587063b2abbda94058120dbf1c7dad.png` $getSaveName=str_replace("\\","/",$info->getSaveName());//把反斜杠(\)替换成斜杠(/) 因为在windows下上传路是反斜杠径20180914\a6587063b2abbda94058120dbf1c7dad.png ![](https://img-blog.csdn.net/20180917155043815?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hhaWJvMDY2OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) [来源链接](https://blog.csdn.net/haibo0668/article/details/82743956) ## tp5 判断数值是否为空 ```` {empty name="name"} name为空 {else /} name不为空 ```` ## tp5 volist 控制前5条数据输出格式 ```angular2html {volist name='list' id='vo' offset='0' length='10' key='k'} {if condition="$k == 5">前5条输出的数据可以看到我{/if} {/volist} ``` ## tp5 分页保留原来的参数 ```php $list = Db::name('decoration_case') ->where($map) ->order('case_create_time desc') ->alias('a') ->join('designer b','a.designer_id = b.id') ->paginate(8,false, [ 'query' => Request::instance()->param(),//不丢失已存在的url参数 ]); ``` ## 前端 ajax 操作 通过 form.serialize() 无法获取 file 文件 > 解决办法 - 1. 给 form 添加一个 id ,名为 `uploadForm` ```angular2html
``` ```javascript var formData = new FormData($( "#uploadForm" )[0]); $.ajax({ type: "POST", url: "/front/api/orderAdd", data : formData,//上面的formData async: false, cache: false, contentType: false, processData: false, success: function(data) { } }); ``` ## 文字滚动(跑马灯) ```html 档案管理联合众媒体共同打造“周年庆跨年家装团购会” 80平米精装全包只要8万8,赠送全房22件品牌家具,赠送6大品牌家电! ``` ## 动态数字滚动特效插件 https://github.com/HubSpot/odometer