fieldtype = ['TEXT' => '']; $this->defaulttype = 'TEXT'; } /** * 字段相关属性参数 * * @param array $value 值 * @return string */ public function option($option) { $str = ''; return [$this->_search_field().'
'.dr_lang('最大能选择的数量限制').'
   
'.dr_lang('开启后会强制要求用户选择最终一个选项,需要启用必须验证才会生效').'
   
'.dr_lang('多选模式下是否折叠显示选择值').'
   
'.dr_lang('针对输入框效果的显示方式').'
', '
'.dr_lang('[整数]表示固定宽度;[整数%]表示百分比').'
']; } /** * 字段输出 */ public function output($value) { return dr_string2array($value); } /** * 字段入库值 * * @param array $field 字段信息 * @return void */ public function insert_value($field) { $save = []; $data = \Phpcmf\Service::L('Field')->post[$field['fieldname']]; if ($data) { $data = dr_string2array($data); if ($data) { foreach ($data as $t) { if ($t) { $save[] = $t; } } $save = array_unique($save); } } // 判断超限 if ($field['setting']['option']['limit'] && dr_count($save) > $field['setting']['option']['limit']) { $save = array_slice($save, 0, $field['setting']['option']['limit']); } \Phpcmf\Service::L('Field')->data[$field['ismain']][$field['fieldname']] = dr_array2string($save); } /** * 验证字段值 * * @param string $field 字段类型 * @param string $value 字段值 * @return */ public function check_value($field, $value) { $values = dr_string2array($value); if ($values) { foreach ($values as $value) { $link = dr_linkage($field['setting']['option']['linkage'], $value); if (!$link) { return dr_lang('选项无效'); } elseif ($field['setting']['option']['ck_child'] && $link['child']) { return dr_lang('需要选择下级选项'); } } } return ''; } /** * 验证必填字段值 * * @param string $field 字段类型 * @param string $value 字段值 * @return */ public function check_required($field, $values) { if (!$values) { // 验证值为空 return dr_lang('%s不能为空', $field['name']); } return ''; } /** * 验证加载变量设置 */ public function set_load_js($name, $value) { \Phpcmf\Service::C()->loadjs['Linkage'] = \Phpcmf\Service::C()->loadjs[$name] = $value; } /** * 字段表单输入 * * @param string $field 字段数组 * @param array $value 值 * @return string */ public function input($field, $value = null) { // 字段禁止修改时就返回显示字符串 if ($this->_not_edit($field, $value)) { return $this->show($field, $value); } // 字段存储名称 $name = $field['fieldname']; // 字段显示名称 $text = ($field['setting']['validate']['required'] ? ' * ' : '').dr_lang($field['name']); // 字段提示信息 $tips = ($name == 'title' && APP_DIR) || $field['setting']['validate']['tips'] ? ''.$field['setting']['validate']['tips'].'' : ''; if ($field['setting']['option']['new']) { // 字段默认值 $value = $value ? $value : $this->get_default_value($field['setting']['option']['value']); $value = dr_string2array($value); if (is_array($value)) { $new = []; foreach ($value as $t) { $new[] = (string)$t; } $value = json_encode($new); } else { $value = '[]'; } // 开始输出 $str = ''; if (!$this->is_load_js('Linkage')) { $str.= ' '; $this->set_load_js('Linkage', 1); } // 输出js支持 $str.= ' '.$tips; } else { // 经典模式 // 联动菜单缓存 $linkage = dr_linkage_list($field['setting']['option']['linkage'], 0); if (!$linkage) { if (CI_DEBUG) { return $this->input_format($name, $text, '
联动菜单【'.$field['setting']['option']['linkage'].'】没有数据
'); } return $this->input_format($name, $text, ''); } // 最大几层 $linklevel = dr_linkage_level($field['setting']['option']['linkage']) + 1; // 开始输出 $str = ''; if (!$this->is_load_js($field['fieldtype'].'_LD')) { $str.= ''; $this->set_load_js($field['fieldtype'].'_LD', 1); } // 表单宽度设置 $width = \Phpcmf\Service::IS_MOBILE_USER() ? '100%' : ($field['setting']['option']['width'] ? $field['setting']['option']['width'] : '100%'); $str.= '
'; $level = 1; // 输出默认菜单 $tpl = '
'; $tpl.= ''; $tpl.= ''; $tpl.= ''; $tpl.= ''; for ($i = 1; $i <= $linklevel; $i++) { $style = $i > $level ? 'style="display:none"' : ''; $tpl.= ''; } $tpl.= ''; $tpl.= '
'; // 字段默认值 $values = dr_string2array($value); if ($values) { foreach ($values as $id => $value) { if ($value) { $link = dr_linkage($field['setting']['option']['linkage'], $value); if (!$link) { continue; } $pids = substr((string)$link['pids'], 2); $level = substr_count($pids, ',') + 1; $default = !$pids ? '["'.$value.'"]' : '["'.str_replace(',', '","', $pids).'","'.$value.'"]'; $str.= '
'; $str.= ''; $str.= ''; $str.= ''; $str.= ''; $str.= ''; $str.= '
'; } } } // 整体 $str.= '
'; $str.= '
'.dr_lang('添加').' '; $str.= '
'; $str.= ''.$tips.''; } return $this->input_format($name, $text, $str); } /** * 字段表单显示 * * @param string $field 字段数组 * @param array $value 值 * @return string */ public function show($field, $value = null) { $str = ''; $values = dr_string2array($value); if ($values) { foreach ($values as $value) { $str.= '
'.dr_linkagepos($field['setting']['option']['linkage'], $value, ' - ').'
'; } } return $this->input_format($field['fieldname'], $field['name'], $str); } }