方法:addItems($items=[], $formdata = [])

参数 含义 类型
items 表单项数组 array
formdata 表单项数据 array

每个数组元素结构[$type,...]

返回:Widget

$widget=new Widget();
$items=[
         ['text','title','文章标题','','','required','text',['placeholder'=>'必填:文章标题']],
         ['text','stitle','短标题','','','required','text',['placeholder'=>'短标题']]
       ];
return $widget
       ->addItems($items)
       ->setUrl(url('newsSave'))
       ->setAjax('ajaxForm-noJump')
       ->fetch();

等同于

$widget=new Widget();
return $widget
       ->addItem('text','title','文章标题','','','required','text',['placeholder'=>'必填:文章标题'])
       ->addItem('text','stitle','短标题','','','required','text',['placeholder'=>'短标题'])
       ->setUrl(url('newsSave'))
       ->setAjax('ajaxForm-noJump')
       ->fetch();

批量添加表单项

可以通过传递表单项数据数组,一般用于插件或模块配置,插件或模块的表单项为items数组,而数据通常保存在数据库中.

例如模块模型中,定义配置设置表单:

public function moduleConfig($url)
{
    $module = request()->module();
    $module_info = self::getInfoFromFile($module);
    $items       = $module_info['config'];
    $trigger     = isset($module_info['trigger']) ? $module_info['trigger'] : [];
    // 数据库保存的配置
    $config = self::where('name', $module)->value('config');
    $config = json_decode($config, true);
    // 构造器创建表单
    $widget = new Widget();
    return $widget
        ->addItems($items, $config)
        ->setTrigger($trigger)
        ->setUrl($url)
        ->setAjax('ajaxForm-noJump')
        ->fetch();
}

在实际模块控制器中,可以直接调用模块模型的配置表单方法:

public function cmsAdmin()
{
    $model = new Module();
    if (request()->isAjax()) {
        $data = $this->request->post();
        $data = json_encode($data);
        if (false !== $model->where('name', 'cms')->update(['config' => $data])) {
            cache('module_config_cms', null);
            $this->success('更新成功', 'categoryIndex', ['is_frame' => 1]);
        } else {
            $this->error('更新失败');
        }
    } else {
        return $model->moduleConfig(url('cmsAdmin'));
    }
}

模块配置文件中的config表单项如下:

'config' => [
    ['text', 'appid', 'AppId', '', '应用ID,登录 微信公众平台 查看'],
    ['text', 'secret', 'AppSecret', '', '应用密钥,登录 微信公众平台 查看'],
    ['text', 'token', 'Token', '', '令牌,用于接口验证,登录 微信公众平台,在【基本配置】中设置'],
    ['text', 'aeskey', 'EncodingAESKey', '', '消息加解密密钥,登录 微信公众平台,在【基本配置】中设置'],
]

调用cmsAdmin控制器方法后,直接创建出配置表单项: