## addSelectAjax('name值', '标题', '提示', '参数' [, '默认值', '额外属性', '额外css类']) 标识符:`selectAjax` >[danger] **注意:该功能仅1.3.3版本以上,并且授权版用户才有,普通版没有该功能**。如果您是授权版用户,请登录官网后,在补丁下载页面下载相应补丁。 | 参数 | 含义 | 类型 | | --- | --- | --- | | name | name值 | string | | title | 标题 | string | | tips | 提示 | string | | params| 参数 | array | | default | 默认值 | string | | extra_attr | 额外属性 | string | | extra_class | 额外css类 | string | 有时候,下拉菜单数据过多,比如上百上千条的时候,点击下拉菜单将会比较卡,那么可以用ajax的方式获取下拉菜单数据。 ### 用法: ~~~ return ZBuilder::make('form') ->addSelectAjax('role', '角色', '非超级管理员,禁止创建与当前角色同级的用户', [ 'table' => 'admin_user' ]) ->fetch(); ~~~ 其中,`table`参数是必须的,需要指定一张表来读取数据,如果你的表中,主键字段是`id`,标题字段是`name`,那么只需要设置`table`参数即可,否则,需要重新定义,比如表中的主键字段是`user_id`,标题字段是`title`。 ~~~ return ZBuilder::make('form') ->addSelectAjax('role', '角色', '非超级管理员,禁止创建与当前角色同级的用户', [ 'table' => 'admin_user', 'id' => 'user_id', 'name' => 'title' ]) ->fetch(); ~~~ 默认情况下,table参数的表名无需添加表前缀,如果您需要指定其他表前缀的表,那么需要设置prefix参数为true,并且table参数填写完整的表名。 ~~~ return ZBuilder::make('form') ->addSelectAjax('role', '角色', '非超级管理员,禁止创建与当前角色同级的用户', [ 'table' => 'tr_admin_user', 'prefix' => true ]) ->fetch(); ~~~ 默认每次请求是15条数据,如果需要修改每次请求的数量,可以设置list_rows参数。 ~~~ return ZBuilder::make('form') ->addSelectAjax('role', '角色', '非超级管理员,禁止创建与当前角色同级的用户', [ 'table' => 'tr_admin_user', 'list_row' => 8 // 每次请求8条数据 ]) ->fetch(); ~~~ 默认情况下,搜索的关键词是模糊匹配主键字段和标题字段,如果有需要,也可以设置要模糊匹配的字段,比如只匹配标题字段。 ~~~ return ZBuilder::make('form') ->addSelectAjax('role', '角色', '非超级管理员,禁止创建与当前角色同级的用户', [ 'table' => 'tr_admin_user', 'search' => 'name' // 仅模糊匹配name字段 ]) ->fetch(); ~~~ 也可以匹配多个字段 ~~~ return ZBuilder::make('form') ->addSelectAjax('role', '角色', '非超级管理员,禁止创建与当前角色同级的用户', [ 'table' => 'tr_admin_user', 'search' => 'username|nickname' // 仅模糊匹配username字段或nickname字段 ]) ->fetch(); ~~~ 当然,也可以用并且的关系来匹配 ~~~ return ZBuilder::make('form') ->addSelectAjax('role', '角色', '非超级管理员,禁止创建与当前角色同级的用户', [ 'table' => 'tr_admin_user', 'search' => 'username&nickname' // 当username字段并且nickname字段都模糊匹配到关键词的数据才显示 ]) ->fetch(); ~~~ 添加额外的搜索条件 ~~~ return ZBuilder::make('form') ->addSelectAjax(role', '角色', '非超级管理员,禁止创建与当前角色同级的用户', [ 'table' => 'tr_admin_user', 'where' => ['status' => 1] // 除了模糊匹配关键词外,还必须符合status等于1的数据 ]) ->fetch(); ~~~ 如果默认的匹配方式不符合要求,可以自定义匹配方法 ~~~ return ZBuilder::make('form') ->addSelectAjax('role', '角色', '非超级管理员,禁止创建与当前角色同级的用户', url('admin/ajax/aa')) ->fetch(); ~~~ 当输入关键词时,将会请求url('admin/ajax/aa')获取返回数据,这里的方法需要自己编写,具体可参考`application\admin\controller\Ajax.php` 中的 `getSelectAjax`方法