blog笔录1
(1)虚拟主机
(2)部署
部署完成后刷新页面会看到笑脸,在Home分组下控制器Application/Home/Controller/IndexController.class.php下定义显示
(3)前后台创建Admin后台分组文件,方便分组Admin和Home
(4)处理后台登录页面
创建控制器IndexController.class.php,加载模板
<?php
namespace Admin\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index(){
$this->display();
}
}
接下来处理模板相关
(5)模板引入Admin/View/Index/index.html
(6)数据库blog、数据表
文章数据表:
create table blog_article(
id mediumint not null auto_increment comment'文章id',
title varchar(60) not null comment'文章标题',
des varchar(255) not null comment'文章描述',
pic varchar(100) not null comment'文章缩略图',
content text not null comment'文章内容',
cateid mediumint not null comment'文章所属栏目id',
time int(12) not null comment'文章发布时间',
primary key(id)
)engine=myisam default charset=utf8;
栏目数据表:
create table blog_cate(
id mediumint not null auto_increment comment'栏目id',
catename varchar(60) not null comment'栏目名称',
primary key(id)
)engine=myisam default charset=utf8;
管理员数据表:
create table blog_admin(
id mediumint not null auto_increment comment'管理员id',
username varchar(60) not null comment'管理员用户名',
password char(32) not null comment'管理员密码',
primary key(id)
)engine=myisam default charset=utf8;
友情链接数据表:
create table blog_link(
id mediumint not null auto_increment comment'友情链接id',
title varchar(60) not null comment'友情链接名',
url varchar(100) not null comment'链接地址',
des varchar(255) not null comment'链接描述',
primary key(id)
)engine=myisam default charset=utf8;
(7)文章分类控制器
<?php
namespace Admin\Controller;
use Think\Controller;
class CateController extends Controller{
public function lst(){
//列表
$this->display();
}
public function add(){
$this->display();
}
public function edit(){
$this->display();
}
public function del(){ }
}
?>
(8)增加对应模板
(9)模板分离
View下创建Public文件夹,存放head.html、side.html、foot.html
<include file="Public/side" />
【二】
(1)栏目添加
控制器编写添加方法
public function add(){
if(IS_POST){
//处理提交
$data = I('post.');
$model = M('cate');
if($model->add($data)){
$this->success('添加成功',U('lst'),3);
}else{
$this->error('添加失败');
}
}else{
$this->display();
}
}
此时刷新会报错

此时需要去应用级别配置文件Application/Common/Conf/config.php配置数据库
<?php
return array(
//'配置项'=>'配置值'
/* 数据库设置 */
'DB_TYPE' => 'mysql', // 数据库类型,除此外还有可能用到access,oracle,sqlite,db2
'DB_HOST' => 'localhost', // 服务器地址,若是远程服务器,则填写远程IP
'DB_NAME' => 'blog', // 数据库名
'DB_USER' => 'root', // 用户名
'DB_PWD' => 'root', // 密码
'DB_PORT' => '3306', // 端口
'DB_PREFIX' => 'blog_', // 数据库表前缀,设置时必须加下划线
'DB_CHARSET' => 'utf8', //字符集编码
// 'DB_DEBUG' => 'true', //数据库调试模式,开启后可以记录50条SQL日志
//显示跟踪信息
'SHOW_PAGE_TRACE' => true,//默认为false关闭
);
(2)栏目后端验证
创建模型CateModel.class.php,添加后端验证
参考手册:http://document.thinkphp.cn/manual_3_2.html#auto_validate

代码:
<?php
namespace Admin\Model;
use Think\Model;
class CateModel extends Model{
protected $_validate = array(
array('catename','require','不能为空',1,'regesx',3), //默认情况下用正则进行验证
array('catename','','该名称已经存在!',0,'unique',3), // 在新增的时候验证name字段是否唯一
);
}
?>
对应修改控制器CateController.class.php代码:
public function add(){
if(IS_POST){
//处理提交
$data = I('post.');
$cate = D('cate');
if ($cate->create($data)) {
if($cate->add()){
$this->success('添加成功',U('lst'),3);
}else{
$this->error('添加失败');
}
}else{
$this->error($cate->getError());
}
}else{
$this->display();
}
}
(3)栏目显示及排序
数据表新增排序字段,默认为10
alter table blog_cate modify sort mediumint default '1';
修改模板文件,让排序对应上id
<input class="common-input sort-input" name="{$vol.id}" value={$vol.sort} type="text">
控制器编写排序方法
//分类排序
public function sort(){
$cate = D('cate');
foreach ($_POST as $id => $sort) {
$cate->where(array('id'=>$id))->setField('sort',$sort); //setField系统函数排序字段,id对应sort
}
$this->success('排序成功',U('lst'),3);
}

(4)栏目的删除
删除操作一般需要二次确认,简单写法
<a class="link-del" href="__CONTROLLER__/del/id/{vol.id}" onclick="return confirm('确认删除?');">删除</a>
点击删除后会弹出浏览器自带的确认框,然后点击确认便会跳到href对应的方法中去

注意:一定要传参id
(5)栏目修改
//修改栏目
public function edit(){
$cate = D('cate');
$cater = $cate->find(I('id'));
$this->assign('cater',$cater);
if(IS_POST){
//处理提交
$data['id'] = I('id');
$data['catename'] = I('catename');
// 【注意一:传id和catename,不然对应不到数据,会提示修改失败】
//后端验证
if ($cate->create($data)) {
$result = $cate->save();
//【注意二:保存更新时,判断条件里不能直接写保存过程,无法执行判断一起做】
//所以要先执行保存,后判断
if($result){
$this->success('修改成功',U('lst'),3);
}else{
$this->error('修改失败');
}
}else{
$this->error($cate->getError());
}
return;
}
$this->display();
}
注意:1. 一定加隐藏域,且更新前需要将id和修改字段一起传入,否则会提示修改失败;
(6)制作链接
(7)添加分页
(8)链接的删除和修改
【三】
(1)引入文章编辑器
blog笔录1的更多相关文章
- 测试使用wiz来发布blog
晚上尝试了下用wiz写随笔并发布,貌似成功了,虽然操作体验和方便性上不如word,但起码它集成了这个简单的功能可以让我用:如果能让我自动新建blog文章并自动定时更新发布就完美了.2013年7月5日1 ...
- Java 标准 IO 流编程一览笔录( 下 )
8.回推流:PushbackInputStream与PushbackReader PushbackInputStream/PushbackReader 用于解析InputStream/Reader内的 ...
- 日向blog开发记录
一点历史关于,Sonne Blog 2016.03.25springmvc + hibernate框架搭建.2016.04.21日向blog首页.2016.04.24分页实现.2016.04.30登录 ...
- blog (后续更新)
设计Model(设计数据库) from django.db import models # Create your models here. class BlogsPost(models.Model) ...
- tensorflow 一些好的blog链接和tensorflow gpu版本安装
pading :SAME,VALID 区别 http://blog.csdn.net/mao_xiao_feng/article/details/53444333 tensorflow实现的各种算法 ...
- http://blog.csdn.net/java2000_wl/article/details/8627874
http://blog.csdn.net/java2000_wl/article/details/8627874
- [Android Pro] http://blog.csdn.net/wuyinlei/article/category/5773375
http://blog.csdn.net/wuyinlei/article/category/5773375
- android 蓝牙 http://blog.csdn.net/u012843100/article/details/52384219
http://blog.csdn.net/u012843100/article/details/52384219
- 【三】用Markdown写blog的常用操作
本系列有五篇:分别是 [一]Ubuntu14.04+Jekyll+Github Pages搭建静态博客:主要是安装方面 [二]jekyll 的使用 :主要是jekyll的配置 [三]Markdown+ ...
随机推荐
- 数组/矩阵转换成Image类
Python下将数组/矩阵转换成Image类 原创 2017年04月21日 19:21:27 标签: python / 图像处理 3596 先说明一下为什么要将数组转换成Image类.我处理的图像是F ...
- myeclipse下jsp页面汉字不能保存问题
在JSP页面中写了些汉字,结果想保存时,却提示编码不对.真扯!说什么"ISO-9000"之类的东东. 我记得以前可以在eclipse的菜单"编辑"中指定当前文件 ...
- 【bzoj1029】[JSOI2007]建筑抢修
按照t2从小到大排列之后贪心. 若当前任务可以插入,则插入. 若当前任务不可以插入,分两种情况: ①当前任务的耗时大于等于之前插入的任务的最大耗时:跳过当前任务 ②当前任务的耗时小于之前插入的任务的耗 ...
- 第二次PHP面试题
昨天下午翘班去参加了人生中第二次PHP面试.是一家相对第一家更加专业的互联网公司.效果不如第一家理想,笔试题有点难,而且偏高理论,面试时面试官也还不错,一起探讨,可是他的问题我还是很多都不知道,果然是 ...
- 编译android framework的例子【转】
本文转载自:http://blog.csdn.net/brucexu1978/article/details/7610358 在开发过程中,尤其是Framework相关开发时,有时候需要重新编译资源文 ...
- 蓝书2.4 AC自动机
T1 玄武密码 bzoj 4327 题目大意: 一些字符串 求这些字符串的前缀在母串上的最大匹配长度是多少 思路: 对于所有串建立AC自动机 拿母串在自动机上匹配 对所有点打标记 以及对他们的fail ...
- iOS组件化开发入门 —— 提交自己的私有库
前言:本人也是初次接触组件化开发,感觉现有的资料太繁杂,就简单整理了一下,在此跟大家分享一些入手的经验,主要就是描述cocoapods的私有库封装和提交.组件化开发是个大的议题,涉及到架构思路.设计模 ...
- 大神给你分析HTTPS和HTTP的区别(转)
http://www.php100.com/html/it/biancheng/2015/0209/8582.html 今天在做雅虎的时候,发现用第三方工具截取不到客户端与服务端的通讯,以前重来没碰到 ...
- Linux 下編輯 PDF 檔的工具(PDF editor under Linux)(转载)
转自:http://www.gtwang.org/2011/05/linux-pdf.html PDF 檔雖然是一個跨平台的檔案格式,但 Adobe 只有提供免費的 Adobe Reader,要看 P ...
- HTML和JSP的不同及优缺点
HTML(Hypertext Markup Language)文本标记语言,它是静态页面,和JavaScript一样解释性语言,为什么说是解释性语言呢?因为,只要你有一个浏览器那么它就可以正常显示出来 ...