thinkphp5项目--企业单车网站(八)(文章板块要点)(删除图片)

thinkphp5项目--企业单车网站(八)(文章板块要点)(删除图片)

项目地址

fry404006308/BicycleEnterpriseWebsite: Bicycle Enterprise Website
https://github.com/fry404006308/BicycleEnterpriseWebsite

一、总结

 1、php标签中加原生php代码实现css(js)的标题过长截取的功能

 

 

二、要点

1、编程期间页面设计问题(框架+基本控件)

其实只需要html5中的那些基本控件就好啊,开始不需要样式,一开始又不要多复杂,一件事情一件事情的来做嘛

框架+基本控件

 

2、控制其它input标签的class对textarea同样有效

<textarea  class="form-control" name="" id="des" ></textarea>

很基础的界面,没有什么复杂样式,但是看起来还是一样的美观

 

 

3、控制器处理数据的时候只处理,不显示

 1 public function add(){
 2     if(request()->isPost()){
 3         
 4         return;
 5     }
 6     //将栏目信息显示回增加界面
 7     //catetree方法新增了栏目的level字段
 8     $modelCate=new ModelCate();
 9     $data=$modelCate->catetree();
10     $this->assign('data',$data);
11 
12     return view();
13 }

处理完数据直接return

 

4、直接模型对象.save添加数据倒是简单方便

 1 public function add(){
 2     if(request()->isPost()){
 3         $datain=input('post.');
 4         $modelArticle=new ModelArticle();
 5         if($modelArticle->save($datain)){
 6             $this->success('添加文章成功!!','article/lst');
 7         }else{
 8             $this->error('添加文章失败!!');
 9         }
10         // dump($datain);die;
11         return;
12     }
13     //将栏目信息显示回增加界面
14     //catetree方法新增了栏目的level字段
15     $modelCate=new ModelCate();
16     $data=$modelCate->catetree();
17     $this->assign('data',$data);
18 
19     return view();
20 }

 

 

5、上传文件两步操作

1 //2、获取传入的文件数据
2 if($_FILES['athumb']['tmp_name']){
3     // 获取表单上传文件 例如上传了001.jpg
4     $file = request()->file('athumb');
5     // 移动到框架应用根目录/public/uploads/ 目录下
6     $info = $file->move(ROOT_PATH . 'public' . DS . 'static/uploads/admin');
7     // 已经上传成功,我们要把文件的路径写进数据库
8     $data['athumb']='/static/uploads/admin/'.$info->getSaveName();
9 }

第一步:从表单获取文件的二进制数据

$file = request()->file('athumb');

第二步:将这个二进制数据写进服务器中,应该是用的io流

$info = $file->move(ROOT_PATH . 'public' . DS . 'static/uploads/admin');

 

6、php标签中加原生php代码实现css的标题过长截取的功能

 1 <tbody>
 2 {volist name='dataout' id='vo'}
 3     <tr>
 4         <td align="center">{$vo.aid}</td>
 5         <td ><?php echo mb_substr($vo['atitle'],0,9,'utf-8'); if(strlen($vo['atitle'])>9){echo '...';} ?></td>
 6         <td align="center">{$vo.athumb}</td>
 7         <td align="center">{$vo.aauthor}</td>
 8         <td align="center">{$vo.acateid}</td>
 9         <td align="center">
10             <a href="#" class="btn btn-primary btn-sm shiny">
11                 <i class="fa fa-edit"></i> 编辑
12             </a>
13             <a href="#" onClick="warning('确实要删除吗', '#" class="btn btn-danger btn-sm shiny">
14                 <i class="fa fa-trash-o"></i> 删除
15             </a>
16         </td>
17     </tr>
18 {/volist}    
19 </tbody>

1、php代码可以实现css(js)中的标题字符过长截取功能

2、php标签volist中可以套用原生php代码,并且可以操作vo

3、mb_substr($vo['atitle'],0,9,'utf-8');函数截取字符还带编码

 

 

7、取某表的所有字段 a.*

$dataout=db('article')->alias('a')->field('a.*,c.catename')->join('bk_cate c','a.acateid=c.id')->paginate(2);

 

8、模型事件(钩子函数:模型中在增删改等操作前后自动执行的事件)

1、通过模型事件(钩子函数),可以模型事件是写在模型里面的,控制器中也必须用了模型操作数据库才能触发模型事件

3、传入一个参数(当前的模型对象实例),也就是你传到模型中的数据,也就是你传到数据库中的数据

2、模型事件是写在模型里面的,控制器中也必须用了模型操作数据库才能触发模型事件

4、支持(当前的模型对象实例),也就是你传到模型中的数据,也就是你传到数据库中的数据

模型

 1 <?php
 2 namespace app\admin\model;
 3 use think\Model;  4  5 class Article extends Model  6 {  7 protected static function init() //用来统一注册,里面的事件注册了才能用  8  {  9 Article::event('before_insert', function ($datain) { //支持传入一个参数,(当前的模型对象实例),也就是你传到模型中的数据 10 if($_FILES['athumb']['tmp_name']){ 11 // 获取表单上传文件 例如上传了001.jpg 12 $file = request()->file('athumb'); 13 // 移动到框架应用根目录/public/uploads/ 目录下 14 $info = $file->move(ROOT_PATH . 'public' . DS . 'static/uploads/admin'); 15 // 已经上传成功,我们要把文件的路径写进数据库 16 $datain['athumb']='/static/uploads/admin/'.$info->getSaveName(); 17  } 18  }); 19  } 20 } 

控制器:

<?php
namespace app\admin\controller;
use think\Controller;

use app\admin\model\Article as ModelArticle; use app\admin\model\Cate as ModelCate; use app\admin\controller\Base; class Article extends Base { public function add(){ if(request()->isPost()){ $datain=input('post.'); $datain['time']=time(); $modelArticle=new ModelArticle(); //2、获取传入的文件数据 /*在模型的事件中处理了*/ if($datain//用了模型,传入的参数就是$datain $this->success('添加文章成功!!','article/lst'); }else{ $this->error('添加文章失败!!'); } // dump($datain);die; return; } //将栏目信息显示回增加界面 //catetree方法新增了栏目的level字段 $modelCate=new ModelCate(); $data=$modelCate->catetree(); $this->assign('data',$data); return view(); } }

 

9、删除之前上传的图片

article模型中的代码:

 1 <?php
 2 namespace app\admin\model;
 3 use think\Model;
 4 
 5 class Article extends Model
 6 {
 7     protected static function init()
 8     {
 9         Article::event('before_update', function ($datain) {
10             if($_FILES['athumb']['tmp_name']){
11                 //1、删除原来的图片
12                 $dataArticle = Article::find($datain->aid);
13                 /*$_SERVER['DOCUMENT_ROOT'] string(129) "E:/2017-02-21--SoftWare/PHP/SOFTWARE/phpStudy_New/PHPTutorial/WWW/github/BicycleEnterpriseWebsite/BicycleEnterpriseWebsite/public"*/
14                 $thumbpath=$_SERVER['DOCUMENT_ROOT'].$dataArticle->athumb;
15                 if(file_exists($thumbpath)){
16                     @unlink($thumbpath);
17                 }
18                 //2、添加新图片
19                 // 获取表单上传文件 例如上传了001.jpg
20                 $file = request()->file('athumb');
21                 // 移动到框架应用根目录/public/uploads/ 目录下
22                 $info = $file->move(ROOT_PATH . 'public' . DS . 'static/uploads/admin');
23                 // 已经上传成功,我们要把文件的路径写进数据库
24                 $datain['athumb']='/static/uploads/admin/'.$info->getSaveName();
25             }
26         });
27     }
28 }    

1、$_SERVER['DOCUMENT_ROOT']

2、file_exists($thumbpath)

3、@unlink($thumbpath);

4、thinkphp中的@

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值