• fastadmin中编辑时的fieldlist选项类型,如何跟数据库里的保持一致,并且显示匹配的样式


    几个关键点

    一:改变显示样式

    1.自动加载
    应该按数据库里的样式。来展现对应的题型
    2.手动改变
    触发不同的类型,改变不同的题型
    3.如何把多选的选项录入到数据库
    一般使用params来当做传入的变量,一般使用rows来当做,输出的变量
    因此,录入的时候,要使用
    ```
    if ($this->request->isPost()) {
    $params = $this->request->post("row/a");
    if ($params) {
    $params = $this->preExcludeFields($params);
    $type = intval($params['type']) - 1;
    $params['selectdata'] = $params['selectdata' . $type];
    $selectarr = json_decode($params['selectdata'], true);
    $params['selectnumber'] = count($selectarr);
    $params['answer'] = $params['answer' . $type];

                foreach ($selectarr as $key => $value) {
                    if (empty($value['key']) && $value['key'] != '0') {
                        $this->error("请填写选项" . ($key + 1));
                    }
                    if (empty($value['value']) && $value['value'] != '0') {
                        $this->error("请填写选项" . ($key + 1) . "答案内容");
                    }
                    unset($selectarr[$key]['checked']);
    
    
                }
                $params['selectdata'] = json_encode($selectarr);
    
    
                if (count(array_unique(array_map('strtolower', array_column($selectarr, 'key')))) != count($selectarr)) {
                    $this->error("请不要输入重复选项!【选项不区分大小写】");
    
                }
    
                if (count(array_unique(array_column($selectarr, 'value'))) != count($selectarr)) {
                    $this->error("请不要输入重复选项答案!");
    
                }
                if ($type == '1') {
                    $params['answer'] = implode(',', $params['answer']);
                }
    
    
                if (empty($params['answer']) && $params['answer'] != '0') {
                    $this->error("请选择正确答案!");
                }
                $result = false;
                Db::startTrans();
                try {
                    //是否采用模型验证
                    if ($this->modelValidate) {
                        $name = str_replace("\model\", "\validate\", get_class($this->model));
                        $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.edit' : $name) : $this->modelValidate;
                        $row->validateFailException(true)->validate($validate);
                    }
                    $result = $row->allowField(true)->save($params);
                    Db::commit();
                } catch (ValidateException $e) {
                    Db::rollback();
                    $this->error($e->getMessage());
                } catch (PDOException $e) {
                    Db::rollback();
                    $this->error($e->getMessage());
                } catch (Exception $e) {
                    Db::rollback();
                    $this->error($e->getMessage());
                }
                if ($result !== false) {
                    $this->success();
                } else {
                    $this->error(__('No rows were updated'));
                }
            }
            $this->error(__('Parameter %s can not be empty', ''));
        }
    
    4
  • 相关阅读:
    UWP关于图片缓存的那些破事儿
    UWP中的文件相关操作
    数据结构-快速排序(C#实现)
    C#与Swift异步操作的差异
    Windows环境下使用Clover四叶草引导双硬盘安装OSX 10.11.5原版镜像
    Winform以任意角度旋转PictureBox中的图片的方法
    Xcode调用旧版本库出现Undefined symbols for architecture x86_64: ld: symbol(s) not found for architecture x86_64
    做WP程序时遇到的一些问题及解决方法
    WInform关闭程序的几种方法以及区别。
    显示在标题上的进度条
  • 原文地址:https://www.cnblogs.com/cn-oldboy/p/12928819.html
Copyright © 2020-2023  润新知