返回旧版| 微信建站| 我要建站 | 建站学习 | 加入收藏
PHPCMS当前位置:首页 > cms教程 > 综合cms > PHPCMS > 正文

phpcms给text单行文本字段增加是否唯一校验

发布时间:2021-05-16 18:37:26   来源:   点击:
在给模型增加单文本字段的时候有个选项:值是否唯一

虽然我们设置了,新增保存的时候确实也提示了但是我们没法第一时间知道是不是重复了,并且修改的时候,是不校验的,这就坑了,所以改造了一下,找到
phpcms\modules\content\fields\text\form.inc.php找到
  1. return '<input type="text" name="info['.$field.']" id="'.$field.'" size="'.$size.'" value="'.$value.'" class="input-text" '.$formattribute.' '.$css.'>'
改成:
  1. $str = '<input type="text" name="info['.$field.']" id="'.$field.'" size="'.$size.'" value="'.$value.'" class="input-text" '.$formattribute.' '.$css.'>'
  2.         if($isunique){ 
  3.             $str = '<input type="text" name="info['.$field.']" id="'.$field.'" size="'.$size.'" value="'.$value.'" onblur="$.get(\'?m=content&c=content&a=public_check_field&catid='.$this->catid.'&id='.$this->id.'&field='.$field.'&issystem='.$issystem.'&sid=\'+Math.random()*5, {data:$(\'#'.$field.'\').val()}, function(data){if(data==\'1\') {$(\'#'.$field.'\').css(\'background\',\'#fe6b5f\');$(\'#tips_'.$field.'\').html(\'<font color=red>重复了</font>\');$(\':submit\').attr(\'disabled\', true);} else{$(\'#'.$field.'\').css(\'background\',\'#fff\');$(\'#tips_'.$field.'\').html(\'\');$(\':submit\').attr(\'disabled\', false);}})"  class="input-text" '.$formattribute.' '.$css.'> <span id="tips_'.$field.'"></span>'
  4.         } 
  5.         return $str; 
主要就是增加一行,如果设置了值唯一,则自动触发一个ajax来判断,然后找到:

phpcms\modules\content\content.php最下边新增方法:
  1. /** 
  2.      * 检查字段是否重复 
  3.      */ 
  4.     public function public_check_field() { 
  5.         if($_GET['data']=='' || $_GET['field']=='' || (!$_GET['catid'])) return ''
  6.         $catid = intval($_GET['catid']); 
  7.         $id = intval($_GET['id']); 
  8.         $field = $_GET['field']; 
  9.         $data = $_GET['data']; 
  10.         $issystem = $_GET['issystem']; 
  11.         $modelid = $this->categorys[$catid]['modelid']; 
  12.         $this->db->set_model($modelid); 
  13.         if(!$issystem){ 
  14.             $this->db->table_name = $this->db->table_name . "_data";//引入附表 
  15.         } 
  16.         $sql = "$field = '$data'"
  17.         if(!empty($id)){ 
  18.             $sql .= " AND id <> '$id'"
  19.         } 
  20.         $r = $this->db->get_one($sql); 
  21.         if($r) { 
  22.             exit('1'); 
  23.         } else { 
  24.             exit('0'); 
  25.         } 
  26.     } 

更新缓存,即可正常判断,效果如图:




【缺点】如果设置了多个字段都是设置是否唯一,如果多个字段同时提示“重复了”,当修改第一个字段为正常的时候,这时候按钮可以正常提交了,也就造成后续字段虽然重复了,但是仍然可以提交的问题,所以建议不要设置太多


相关栏目
热门文章
最新图文
评论排行
版权所有:郑州腾石网络科技有限公司 备案信息:豫ICP备18019117号-2
站长QQ:2863868475 业务合作咨询:15137100750(同微信)
本站所有投放的广告是有其他网站提供,不代表本站立场,同时网站首页广告位对外出租详情咨询本站站长!同时欢迎广大站长加入个人建站团队
  • 建站客服
  • CMS仿站
  • CMS学习
  • 技术交流群:336572814