A-A+

Thinkphp获取所属分类名称

2016年08月16日 PHP开源系统 暂无评论 阅读 6 views 次

使用 Thinkphp 最大的好处就是不用自己去写哪些繁琐的增删改查代码了,在 Thinkphp 里面直接实例化调用就可以了,Thinkphp 开发站点的效果极其的高速,尤其对于经常用到的增删改查,开发就更快速了,在站点的开发应用中,有的时候我们不仅仅要读取一个表,有可能四个表五个表都有其关联性,比如新闻站点,每一条新闻都有其自己的新闻分类,在这个基础之上,去扩展一个大型的新闻站点也是很容易的事情,之前一直自己手写框架来实现这样的功能,根据这个思路,原来在 Thinkphp 中实现新闻调用其上级分类ID及名称也是很简单的事情,看如下的实例。

首先看 Action 的实例代码:

  1.   //添加  
  2. public function add(){    
  3.         
  4. $model = M('ratio');  
  5.       if ($_POST){  
  6.           
  7.         if (!I("post.upper")){  
  8.             $this->error('上限不能为空');  
  9.         } //xiariboke.net  
  10.           
  11.         $data['upper'] = I("post.upper");  //上限天数  
  12.         $data['lower'] = I("post.lower");  //下限天数  
  13.         $data['proportion'] = I("post.proportion");  //比例  
  14.         $data['gradeid'] = I("post.gradeid");  //比例  
  15.           
  16.          if ($model->add($data)){  
  17.                 $this->success('添加成功',U('Ratio/index'));  
  18.             }else {  
  19.                 $this->error('添加失败');  
  20.             }  
  21.       }else{  
  22.           
  23.       $model = M('grade');  
  24.       $list   = $model->order('id desc')->select();  
  25.       $this->list=$list;  
  26.       $this->display();  
  27.         
  28.       }  
  29.   }  

public 的一个 function add ,用的是 M 模型,如果想要自动验证的话可以直接使用 D,下面就是简单的数组添加了,ratio 是风险等级表,相当于我们平常的新闻表,在最下面的 else 下面的代码 grade 则是分类表了,关于 ratio 的风险分类,也就相当于新闻分类了,else 下面是在没有接受到 post 的时候显示在 add 模板中的,下面看一下 add 模板的代码:

  1. <form method='post' id="form1" name="form1" action="{:U('Ratio/add')}"    class="form-horizontal"  enctype="multipart/form-data">  
  2. 风险等级:   
  3.      <select name="gradeid">  
  4.                <volist name="list" id="vo">  
  5.                  <option value="{$vo.id}">  
  6.                           {$vo.title}  
  7.                     </option>  
  8.                   </volist>  
  9.          </select> //xiariboke.net  
  10. 上限(最低天数):<input type="text" name="upper" class="ipt6" class="col-xs-10 col-sm-5">  
  11. 下限(最低天数): <input type="text" name="lower" class="ipt6" class="col-xs-10 col-sm-5">  
  12. 保单比例:<input type="text" name="proportion" class="ipt6" class="col-xs-10 col-sm-5">  
  13. <button type="submit" class="btn btn-info">提交</button>  
  14. <button type="reset" class="btn">重置</button>  
  15. <input type="hidden" name="id" value="{$vo.id}" >  
  16. </form>  

样式太多,所以我这里把样式给清除了,只留下 表单的内容。

除了在添加的时候要调用风险等级分类的名称外,还要在修改的时候同样调用,看 function edit 代码如下:

  1. //修改  
  2. public function edit(){  
  3.   
  4.     $id     = I("get.id");  
  5.     $model = M('ratio');  
  6.   
  7.     if ($_POST){  
  8.         if (!I("post.upper")){  
  9.             $this->error('上限不能为空');  
  10.         }  
  11.         $upper = I("post.upper");  //上限  
  12.         $lower = I("post.lower");  //下限  
  13.         $proportion = I("post.proportion");  //比例  
  14.         $data['gradeid'] = I("post.gradeid");  //所属分类  
  15.         //xiariboke.net  
  16.         $model->where(array('id'=>$id))->save($_POST);  
  17.         $this->success('修改成功',U('Ratio/index'));  
  18.           
  19.     }else{  
  20.         $where['id'] = array('eq',$id);  
  21.         $this->list = $model->where($where)->find();  
  22.           
  23.         $this->cate = M('grade')->select();  
  24.           
  25.         $this->display();  
  26.     }  
  27. }  

读取的时候跟平常一样,主要看 else 下面模板的数据,除了读取 _ratio 的数据(类似于新闻表),同样读取了分类 _grade(类似于新闻分类表),主要读取出来的分类内容就在 edit 模板里面了,看代码:

  1.  <form method='post' id="form1" name="form1" action="{:U('Ratio/edit',array('id'=>$list['id']))}"  enctype="multipart/form-data">  
  2. 风险等级:  
  3.        <select name="gradeid">  
  4.        <volist name="cate" id="vo">  
  5.         <option value="{$vo.id}" <if condition="$vo['id'] eq $list['gradeid']">selected=selected</if>>{$vo.title}</option>  
  6.             </volist>  
  7.                               </select>  
  8. 上限(最低天数): <input type="text" name="upper" class="ipt6" value="{$list.upper}">  
  9. 下限(最高天数): <input type="text" name="lower" class="ipt6" value="{$list.lower}">  
  10. 保单比例: <input type="text" name="proportion" class="ipt6" value="{$list.proportion}">  
  11. <button type="submit" class="btn btn-info">提交</button>//xiariboke.net  
  12. <button type="reset">重置</button>  
  13. <input type="hidden" name="id" value="{$list.id}" >  
  14. </form>  

同样的去除了 CSS 样式,取分类名称的数据主要看如下的这部分:

  1.      <select name="gradeid">  
  2.   <volist name="cate" id="vo">  
  3. <option value="{$vo.id}" <if condition="$vo['id'] eq $list['gradeid']">selected=selected</if>>{$vo.title}</option>  
  4.   </volist>  
  5.         </select>  
标签:

给我留言