Field 类

Field 类是所有字段插件的基类,不可实例化。

Field 的公开属性,可用于设置的属性

 

public string $label = ''; 

可在注解种设置字段标题,

public string $name = ''; 

字段名称,只读,Model 的被注解的属性名称就是 name

public bool $close = false; 

可在注解中设置 是否关闭字段,如果设置为 true 则该字段不参与表单操作。

public bool $viewClose = false;

可在注解中设置 关闭你视图,如果设置为 true ,则 表单Form->getViewFields() 不会被加入。

public int $viewMerge = 0

可在注解中设置 合并选项,
0 为不合并,
1 为向下合并,即将自己添加到下一个字段的 prev 属性去。
-1 为向上合并 ,即将自己添加到上一个字段的  next 属性去。

public bool $hidden = false;

可在注解中设置 是否加入到 表单的 隐藏域中去, 如果设置为ture 需要 使用表单 Form->fetchHideBox() 来显示。

 

public bool $offEdit = false;

可在注解中设置 是否在表单为 edit 编辑模式时,关闭编辑,即不会修改该字段的任何内容。也不会在表单 Form->getData() 中获取到值。

 

public bool $offJoin = false; 

可在注解中设置 是否要取消加入到 所获取的数据中 ,如果设置为 TRUE  则 在表单 Form->getData() 中获取到值返回的数组中将没有该字段。

public string $before = '';

可在注解中设置 在输入框之前的文本,比如  【      】【    】

 

public string $after = ''; 

可在注解中设置 在输入框之后的文本,如单位   【      】,  【      】

 

public string $prompt = '';

可在注解中设置 提示说明的短语。

public bool $star = false;

可在注解中设置 是否标 *  需要在模板中读取值来设置。

public string $tabIndex = ''; 

可在注解中设置 设置字段所在的标签组。

public array $valid = [];       

验证数据的规则配置。
在注解中一般使用如下字段配置
注解中设置

validRule: ['r' => '请输入用户密码', 'minLen' => [6, '用户密码长度至少是6位以上']]

配置验证规则,对应设置的是  $valid['rule']

validGroup:[['r' => '请填写省份'],['r' => '请填写城市']]

如果有多组,如联动下拉框 对应设置的是 $valid['group']

validDisabled:true  

关闭控件, 如联动下拉框 对应设置的是 $valid['disabled']

validFunc:['MyClass','myFunc']

使用自己的函数验证,对应设置的是 $valid['func']

除此之外 还有 

validDefault:'默认提示',
validCorrect:'正确提示',
validError:'直接提示错误',
validDisplay:'#errorId' //将错误信息打印在哪个html 标签上

 

分别对应 的是 
$valid['default']
$valid['correct']
$valid['error']
$valid['display']

具体的规则配置,可另看验证规则配置说明。

 

array $attrs = [];

仅可在注解中设置,不可在控制器等代码环境中设置。

控件的属性 如样式  style  样式名称  class  及其他 属性设置。
如:

attrs:[
'class'=>'form-inp text',
'style'=>'width:30px',
'placeholder'=>'请输入用户密码'
],

控制器或者代码环境中设置或者读取使用

setAttr(string $name, mixed $value)

getAttr(string $name): mixed

进行设置和读取。

public string $boxName;  

只读,不可在注解中设置,控件的name 属性 如<input name='username'/>
在注解中 使用

attrs:['name'=>'username']

设置

public string $boxId;

只读,不可在注解中设置,控件的 id 属性 如<input id='username'/>
在注解中 使用

attrs:['id'=>'username']

设置

 

public ?array $dynamic = null

可在注解中设置 动态开关验证,及显示控制 (需要 YeeUI 库支持)。
格式如下:

dynamic:[
[
'eq'=>1, //当值为1 的时候 显示 username,password 控件,隐藏 intro
'show'=>'username,password',
'hide'=>'intro'
],
[
'neq'=>1, //当值不为1 的时候 显示 intro 控件,隐藏 username,password
'show'=>'intro',
'hide'=>'username,password'
]
]

或者 开关验证规则

dynamic:[
[
'eq'=>1, //当值为1 的时候 开启 username,password 控件验证,关闭 intro 的验证。
'on'=>'username,password',
'off'=>'intro'
],
[
'neq'=>1, //当值不为1 的时候 开启 intro 控件的验证,关闭 username,password的验证。
'on'=>'intro',
'off'=>'username,password'
]
]

可以支持多项控制。如果要控制显示和隐藏 需要给控件所在的容器添加  id='对应id-row'
如果 username 名称的控件所在的容器 div 否则 YeeUI 无法识别到对应的显示区域进行控制显示或者隐藏,一般的 如果隐藏控件,将会关闭验证,相反的显示控件会开启验证。

<div id="{$field->boxId}-row">
<label>{$field->label}</label><div>{input field=$field}</div>
</div>

 

public string|array|null $defaultFunc = null;

指定函数名设置默认值:
在使用默认值函数是,当前的字段属性值必须是 null. 
如在Model 中

class UserModel
{

    #[Date(
        label: '选择日期1',
        defaultFunc: [self::class, 'getDate']
    )]
    public string $date1 = ''; //这里默认值不是 null 不会调用 defaultFunc 设置的方法 设置默认值

    #[Date(
        label: '选择日期2',
        defaultFunc: 'time' //使用内置函数
    )]
    public int $date2 = 0;   //这里默认值不是 null 不会调用 defaultFunc 设置的方法 设置默认值


    #[Date(
        label: '选择日期1',
        defaultFunc: [self::class, 'getDate']
    )]
    public ?string $date3 = null; //这里默认值是 null 会调用 defaultFunc 设置的方法 设置默认值

    #[Date(
        label: '选择日期2',
        defaultFunc: 'time' //使用内置函数
    )]
    public ?int $date4 = null;   //这里默认值是 null 会调用 defaultFunc 设置的方法 设置默认值



    public static function getDate(): string
    {
        return date('Y-m-d');
    }


}

 

public string $defaultFromParam = '';

从传递的参数中获取表单默认值
如从URL或者其他表单post过来的数据中获得默认值,同 defaultFunc 一样,需要设置默认值的Model属性字段 值必须是 null 才能设置。

    #[Integer(
        label: '父ID',
        defaultFromParam:'pid'
    )]
    public ?int $pid = null;




使用实例:

在一个Model 中的使用例子:

 #[Text(
        label: '用户名',
        tabIndex: 'base',
        validRule: ['r' => '请输入用户名'],
        validDisabled: true,
        validFunc: ['MyClass', 'myFunc'],
        validDefault: '默认提示',
        validCorrect: '正确提示',
        validError: '直接提示错误',
        validDisplay: '#errorId', //将错误信息打印在哪个html 标签上
        offEdit: true,
        attrs: [
            'class' => 'form-inp text',
            'style' => 'width:300px',
            'placeholder' => '请输入用户名'
        ],
    )]
    public string $username = '';

    #[Select(
        label: '选项类型',
        tabIndex: 'base',
        offEdit: true,
        attrs: [
            'class' => 'form-inp select',
            'style' => 'width:30px',
        ],
        dynamic: [
            [
                'eq' => 1, //当值为1 的时候 开启 username,password 控件验证,关闭 intro 的验证。
                'show' => 'username,password',
                'hide' => 'intro'
            ],
            [
                'neq' => 1, //当值不为1 的时候 开启  intro 控件的验证,关闭 username,password的验证。
                'on' => 'intro',
                'off' => 'username,password'
            ]
        ],
        options: [
            ['value' => 1, 'text' => '显示用户名及密码 隐藏介绍'],
            ['value' => 2, 'text' => '隐藏用户名及密码 显示介绍']
        ]
    )]
    public string $kind = '';

 

由于所有的控件都会继承字 Field 所以这些设置项对所有控件是一致的。

其他设置项将有控件扩展补充。


上一篇:Form 类
下一篇:验证规则(注解配置)
Copyright © 2021 海南的叶子 All Rights Reserved 琼ICP备2021000725号

琼公网安备 46900702000037号