万能字段使用技巧整理

http://bbs.phpcms.cn/thread-868750-1-1.htmljavascript

http://bbs.phpcms.cn/thread-869106-1-1.html
这是高级用法的说明.
先来对万能字段作一个简单的修改.
让万能字段能进进简单的判断,
之后的技巧都将基于上面教程中的高级用法进行;

/phpcms/modules/content/fields/omnipotent/form.inc.php
这是万能字段的类方件.当更新缓存的时候会读这里的文件写到缓存,而后使用的时候再从缓存里读取;
因此咱们要修改就改这里!改完后更新缓存!php

function omnipotent($field, $value, $fieldinfo) { extract($fieldinfo); $formtext = str_replace('{FIELD_VALUE}',$value,$formtext); $formtext = str_replace('{MODELID}',$this->modelid,$formtext); preg_match_all('/{FUNC\((.*)\)}/',$formtext,$_match); foreach($_match[1] as $key=>$match_func) { $string = ''; $params = explode('~~',$match_func); $user_func = $params[0]; $string = $user_func($params[1]); $formtext = str_replace($_match[0][$key],$string,$formtext); } preg_match_all('/{if\((.*)\)}/',$formtext,$_match); foreach($_match[1] as $key=>$match_func) { $string = ''; $params = explode(',',$match_func); $str = $params[0]; if($str){ $string = $params[1]; }else{ $string = $params[2]?$params[2]:''; } $formtext = str_replace($_match[0][$key],$string,$formtext); } $id  = $this->id ? $this->id : 0; $formtext = str_replace('{ID}',$id,$formtext); $errortips = $this->fields[$field]['errortips']; if($errortips) $this->formValidator .= '$("#'.$field.'").formValidator({onshow:"",onfocus:"'.$errortips.'"}).inputValidator({min:'.$minlength.',max:'.$maxlength.',onerror:"'.$errortips.'"});'; if($errortips) $this->formValidator .= '$("#'.$field.'").formValidator({onshow:"'.$errortips.'",onfocus:"'.$errortips.'"}).inputValidator({min:1,onerror:"'.$errortips.'"});'; return $formtext; }

改过了文件以后.(更新缓存)
万能字段就多了一个语法
{if(条件,值1,值2)}
这个判断用来干吗?
万能字段.特点就是能够放入别的字段.
一般我都把万能字段作成选项.选中就显示附加字段内容.
但万能字段自己没有判断的语法,用JS么?增长内容的时候,字段值 为空,
JS判断就会出错;
因此就要这么一个简单的判断语法了!
使用方法例:css

<input type="radio" id="external1" name="info[external]"  value="1"  {if({FIELD_VALUE},checked,)}/>启用 <input type="radio"  id="external0"  name="info[external]"  value="0" {if({FIELD_VALUE},,checked)}/>关闭 <div style="width:80%; [color=Red]{if({FIELD_VALUE}, ,display:none;)}[/color] "id="external"> 接口地址{userapi} </div>
<script type="text/javascript"> $(document).ready(function(){ $("#external1").click(function(){ $("#external").css("display","block"); }); $("#external0").click(function(){ $("#external").css("display","none"); }); }); </script>

注意这里面的 , 逗句的用法.(英文半角符号)
用判断配合JS就能够实现选中后再显示附加字段!
第一个用法完成.请等待更新!html

万能字段技巧 -- 调用外表字段

这是我以前一直想作的事!
调用别的表里面的一个字段的值.
如今给你们分享

由于个人系统没什么内容.就调用自定义表单里的字段吧
我要调用的表名为 form_wei_attention   字段名为 name 条件是当前投稿用户,后台则不限条件


首先增长万能字段,我这里把他叫  
字段名  gname
字段别名  公众号名称
表单内容  {FUNC(wei_cal_name~~{FIELD_VALUE},gname)}
这里的写法,多了一个 , 逗号和一个gname 这是为了传递当前字段名称,这样的话,咱们更改当前字段名也不用改方法
保存在主表,(怎么存在主表,见上一楼)
其它随意,
1.jpgjava

昨天 19:09 上传
下载附件 (79.54 KB)



而后去自定义函数文件中增长方法api

//万能字段使用

        function wei_cal_name($field){ $fields = explode(",", $field); $userid = param::get_cookie('_userid');                                //获取当前用户ID
                if ($userid)$where = array('userid'=>$userid); //设置调用条件为当前用户,后台增长的时候,此条件为空,就会调用全部的内容
                $db = pc_base::load_model('sitemodel_field_model'); $db->change_table('form_wei_attention');                        //要调用的表名
                $data = $db->select($where,'name');                                        //这是要调用的字段名
                $srt = "<select name=\"info[{$fields[1]}]\" id=\"{$fields[1]}\" >"; foreach ($data as $value) { if ($fields[0] == $value['name']) { $srt.="<option value='{$value['name']}' selected = 'selected'>{$value['name']}</option>"; }else { $srt.="<option value='{$value['name']}'>{$value['name']}</option>"; } } $srt.="</select>"; return $srt; }

而后去后台增长一个信息,
你就会看到这个字段变成了一个下拉选择框.里面是全部的信息列表...
若是你以为多了,那就本身设置一下条件吧!缓存

2.jpg

相关文章
相关标签/搜索