A-A+
Thinkphp获取所属分类名称
使用 Thinkphp 最大的好处就是不用自己去写哪些繁琐的增删改查代码了,在 Thinkphp 里面直接实例化调用就可以了,Thinkphp 开发站点的效果极其的高速,尤其对于经常用到的增删改查,开发就更快速了,在站点的开发应用中,有的时候我们不仅仅要读取一个表,有可能四个表五个表都有其关联性,比如新闻站点,每一条新闻都有其自己的新闻分类,在这个基础之上,去扩展一个大型的新闻站点也是很容易的事情,之前一直自己手写框架来实现这样的功能,根据这个思路,原来在 Thinkphp 中实现新闻调用其上级分类ID及名称也是很简单的事情,看如下的实例。
首先看 Action 的实例代码:
- //添加
- public function add(){
- $model = M('ratio');
- if ($_POST){
- if (!I("post.upper")){
- $this->error('上限不能为空');
- } //xiariboke.net
- $data['upper'] = I("post.upper"); //上限天数
- $data['lower'] = I("post.lower"); //下限天数
- $data['proportion'] = I("post.proportion"); //比例
- $data['gradeid'] = I("post.gradeid"); //比例
- if ($model->add($data)){
- $this->success('添加成功',U('Ratio/index'));
- }else {
- $this->error('添加失败');
- }
- }else{
- $model = M('grade');
- $list = $model->order('id desc')->select();
- $this->list=$list;
- $this->display();
- }
- }
public 的一个 function add ,用的是 M 模型,如果想要自动验证的话可以直接使用 D,下面就是简单的数组添加了,ratio 是风险等级表,相当于我们平常的新闻表,在最下面的 else 下面的代码 grade 则是分类表了,关于 ratio 的风险分类,也就相当于新闻分类了,else 下面是在没有接受到 post 的时候显示在 add 模板中的,下面看一下 add 模板的代码:
- <form method='post' id="form1" name="form1" action="{:U('Ratio/add')}" class="form-horizontal" enctype="multipart/form-data">
- 风险等级:
- <select name="gradeid">
- <volist name="list" id="vo">
- <option value="{$vo.id}">
- {$vo.title}
- </option>
- </volist>
- </select> //xiariboke.net
- 上限(最低天数):<input type="text" name="upper" class="ipt6" class="col-xs-10 col-sm-5">
- 下限(最低天数): <input type="text" name="lower" class="ipt6" class="col-xs-10 col-sm-5">
- 保单比例:<input type="text" name="proportion" class="ipt6" class="col-xs-10 col-sm-5">
- <button type="submit" class="btn btn-info">提交</button>
- <button type="reset" class="btn">重置</button>
- <input type="hidden" name="id" value="{$vo.id}" >
- </form>
样式太多,所以我这里把样式给清除了,只留下 表单的内容。
除了在添加的时候要调用风险等级分类的名称外,还要在修改的时候同样调用,看 function edit 代码如下:
- //修改
- public function edit(){
- $id = I("get.id");
- $model = M('ratio');
- if ($_POST){
- if (!I("post.upper")){
- $this->error('上限不能为空');
- }
- $upper = I("post.upper"); //上限
- $lower = I("post.lower"); //下限
- $proportion = I("post.proportion"); //比例
- $data['gradeid'] = I("post.gradeid"); //所属分类
- //xiariboke.net
- $model->where(array('id'=>$id))->save($_POST);
- $this->success('修改成功',U('Ratio/index'));
- }else{
- $where['id'] = array('eq',$id);
- $this->list = $model->where($where)->find();
- $this->cate = M('grade')->select();
- $this->display();
- }
- }
读取的时候跟平常一样,主要看 else 下面模板的数据,除了读取 _ratio 的数据(类似于新闻表),同样读取了分类 _grade(类似于新闻分类表),主要读取出来的分类内容就在 edit 模板里面了,看代码:
- <form method='post' id="form1" name="form1" action="{:U('Ratio/edit',array('id'=>$list['id']))}" enctype="multipart/form-data">
- 风险等级:
- <select name="gradeid">
- <volist name="cate" id="vo">
- <option value="{$vo.id}" <if condition="$vo['id'] eq $list['gradeid']">selected=selected</if>>{$vo.title}</option>
- </volist>
- </select>
- 上限(最低天数): <input type="text" name="upper" class="ipt6" value="{$list.upper}">
- 下限(最高天数): <input type="text" name="lower" class="ipt6" value="{$list.lower}">
- 保单比例: <input type="text" name="proportion" class="ipt6" value="{$list.proportion}">
- <button type="submit" class="btn btn-info">提交</button>//xiariboke.net
- <button type="reset">重置</button>
- <input type="hidden" name="id" value="{$list.id}" >
- </form>
同样的去除了 CSS 样式,取分类名称的数据主要看如下的这部分:
- <select name="gradeid">
- <volist name="cate" id="vo">
- <option value="{$vo.id}" <if condition="$vo['id'] eq $list['gradeid']">selected=selected</if>>{$vo.title}</option>
- </volist>
- </select>