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 appadminmodel;
3 use thinkModel;
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 appadmincontroller;
use thinkController;
use appadminmodelArticle as ModelArticle;
use appadminmodelCate as ModelCate;
use appadmincontrollerBase;
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 appadminmodel; 3 use thinkModel; 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中的@