QQ咨询 官方微信

添加微信好友

官方小程序

百度小程序

微信小程序

头条小程序

关于我们

PHPCMS

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

 admin  2022-06-03 19:29:33
在给模型增加单文本字段的时候有个选项:值是否唯一

虽然我们设置了,新增保存的时候确实也提示了但是我们没法第一时间知道是不是重复了,并且修改的时候,是不校验的,这就坑了,所以改造了一下,找到
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.     } 

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




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


¥ 打赏
×
如果您觉得文章帮助了您就打赏一下吧
非常感谢你的打赏,我们将继续分享更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

本文《phpcms给text单行文本字段增加是否唯一校验》发布于石头博客文章,作者:admin,如若转载,请注明出处:https://www.pweb123.com/cms/phpcms/821.html,否则禁止转载,谢谢配合!

文章点评

我来说两句 已有0条评论
点击图片更换

添加微信好友

添加微信好友

微信小程序

百度小程序