# 基础/示例

# 构建导入构建器

通过公共方法YI('demo')返回一个id为demo的导入构建器对象。

注意!YunjImport 的完全限定名称为:\yunj\core\builder\YunjImport

  • 方式一:链式操作
$builder=YI('demo')
    ->sheets(["Sheet1","Sheet2"])
    ->cols(function(YunjImport $builder, $sheet){...})
    ->limit(20)
    ->tips([...])
    ->row(function(YunjImport $builder,$row){...});
  • 方式二:数组配置
$args = [
    "sheets"=>["Sheet1","Sheet2"],
    "cols"=>function(YunjImport $builder, $sheet){...},
    "limit"=>20,
    "tips"=>[...],
    "row"=>function(YunjImport $builder,$row){...}
];
$builder=YI('demo',$args);

# 渲染输出

详见:导入渲染输出

  • 方法一:页面内只有单一导入时,可参考如下方法:

    注意!此方法仅支持渲染一个导入构建器,不需要写视图文件

    // 控制器方法中调用如下方法
    $builder = ...;
    return view_import($builder);
    
  • 方法二:自定义页面内容时,可调用如下方法:

    注意!此方法支持一个页面渲染多个导入构建器,需要写视图文件

    // 控制器方法中调用如下方法
    $builder->assign();
    // 视图渲染
    return $this->fetch();
    

# 视图页面

<!-- 继承公共模板文件 -->
{extend name="$adminPage"}

<!-- 重写content内容 -->
{block name="content"}
<!-- import标签定义type属性为yunj,id与后端数据导入构建器id一致 -->
<import type="yunj" id="demo"></import>
{/block}

提示:支持一个页面渲染多个数据导入

小技巧:当页面只有一个导入时,默认头部固定。示例如下:

{extend name="$adminPage"}

{block name="content"}
<import type="yunj" id="demo"></import>
{/block}

# 简单示例

# 代码实现如下:

public function sample() {
    $builder = YI('demo')
        ->cols(function (YunjImport $builder, $sheet) {
            return [
                'name'=>[
                    "title"=>'姓名',
                    "default"=>"小王",
                    "verify"=>'require|chs',
                    "desc"=>"必填",
                ],
                'age'=>[
                    "title"=>'年龄',
                    "default"=>18,
                    "verify"=>'require|positiveInt',
                    "desc"=>"必填,必须为正整数",
                ],
                'sex'=>[
                    "title"=>'性别',
                    "default"=>"男",
                    "verify"=>"require|in:男,女",
                    "desc"=>"必填,可选值:男/女",
                ]
            ];
        })
        ->row(function (YunjImport $builder, $row) {
            // 导入成功(可不设置,默认为成功)
            //$row->importSuccess();
            // 导入失败
            $row->importFail('演示数据不能进行导入操作');
        });
    return view_import($builder);
}