分类目录归档:php

Thinkcmf6 札记 后台菜单 管理

控制器后台C

后台菜单需要在public/index.php 中的debug开启才能显示,默认是注释掉的。

快捷方式中的菜单管理只在调试模式下才会显示,如果生产环境中要进行后台菜单管理,可以访问:你的域名/admin/menu/index,后台菜单管理主要是给开发者用的,所以生产环境中会隐藏。

admin后台菜单下需要导入:

<?php
namespace app\demo\controller;

use cmf\controller\AdminBaseController;

前台用户

<?php
namespace app\demo\controller;

use cmf\controller\UserBaseController;

前台

<?php
namespace app\demo\controller;

use cmf\controller\HomeBaseController;

模型M

use think\facade\Db;
#V中加入
$user = ['user_nickname'=>'老猫'];
Db::name('user')->insert($user);
#不推荐


#模型

<?php
#创建文件在model下,文件名为UserModel.php
namespace app\user\model;

use think\Model;

class UserModel extends Model
{
    /**
     * 模型名称
     * @var string
     */
    protected $name = 'user';
    #对应表cmf_user ,默认为cmf_
    #protected $table = 'xmf_user';
    #对应表xmf_user

}

调用

use app\user\model\UserModel;

$user = UserModel::get(1);

// 实例化模型并添加一个用户
$user                = new UserModel;
$user->user_nickname = 'ELE';
#设置为user_nickname 为表中键名
$user->save();

php遗漏点

之前一直用Thinkphp导致都不会原生的PHP了,有个小点遗漏了。
PHP获取POST的原始数据:

$post=file_get_contents("php://input");

这句就是获取原始数据格式,是字符串形式的。
如果是JSON格式的话可以使用
$poa=json_decode($post,true);
来吧string转换为array

前段模板开发笔记

三段式结构,左右两边少用iframe,左边菜单栏目自动生成,且点击项目加上active激活;右边为具体内容。
顶部的信息栏为顶部设置,可以分页分别设计,也可以自动生成,目前自动生成的意愿较大。
按照adminlte的设计来,因为是bootstrap4,与3改动不到,直接按照项目来!

toPDF基于ThinkCMS和libreoffice的在线office转换平台

topdf

github:https://github.com/maysrp/topdf

微信截图_20201016210213.png

准备

office文档在线转换pdf平台
基于ThinkPHP5.1下的ThinkCMS5.1开发,只有word,excel,ppt,txt,文本在线转pdf的功能。

Nginx php>7.1 mysql
libreoffice python3

推荐安装lnmp.org一键安装包,lnmp安装完成后在php中添加fileinfo,之后按照以下命令按照libreoffice和pymysql

apt-get update
apt-get install libreoffice python3-pip
pip3 install pymysql

字体安装

因为libreoffice转码时候需要字体,不然中文会全部乱码
mkdir /usr/share/fonts/Fonts
上传字体到这个目录(/usr/share/fonts/Fonts),字体哪里找?
你的 C:\Windows\Fonts 下面的字体你上传几个就好了,推荐雅黑,宋体,黑体

Nginx

nginx修改fastcgi.conf配置

lnmp下该文件在 /usr/local/nginx/conf/fastcgi.conf

把其中的

#fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";
fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/../:/tmp/:/proc/";

Nginx 配置
修好你的nginx的网站配置文件
vim /usr/local/nginx/conf/vhost/你的网站.conf

在root那行,最后添加上/public,如下的代码形式,定义web的根目录为public

root /home/wwwroot/www.yunbt.net/public;

安装

网站安装

下载该项目文件pdfgaoji.tgz到你的网站目录上并且解压,给予data目录 和public/upload , public/download , public/plugins , public/themes , 权限为777
转到你网站的根目录中的python目录下,执行python3 install.py按照提示依次输入数据库用户名,数据库名,数据库密码,即可完成网站的安装。

转码服务端安装

修改python目录下的 run.py和screen.py 中13行代码 设置为你的网站的根目录。
webdir="/home/wwwroot/pdf.gaoji.me/"
run.py使用crontab 去每分钟执行一次去处理文档的转码。
screen.py是使用screen来保持进程,可以做到按秒处理。
推荐使用screen
screen -dmS pdf python3 screen.py

大功告成

后台

微信截图_20201016205614.png

微信截图_20201016205630.png

微信截图_20201016205750.png

office文件的PDF转换

使用libreoffice的命令可以将word,excel,ppt转换为PDF,命令也很简单:
libreoffice --convert-to pdf 输入文件 --outdir 输出文件目录
输入文件可以为word,excel ,ppt之类的office文件,顺道用ThinkCMF写了个在线转换
redPDF

问题还是宽带问题,租不起国内的服务器,因为涉及到上传和下载,说以上下宽带都要大,国内20M的镇江电信普遍都要200+每月,因为涉及到上传word子类的office文件,所以至少10M以上,否则上传等待时间过久。