# 动态表单
原文链接 : [http://zeppelin.apache.org/docs/0.7.2/manual/dynamicform.html](http://zeppelin.apache.org/docs/0.7.2/manual/dynamicform.html)
译文链接 : [http://www.apache.wiki/pages/viewpage.action?pageId=10030585](http://www.apache.wiki/pages/viewpage.action?pageId=10030585)
贡献者 : [片刻](/display/~jiangzhonglian) [ApacheCN](/display/~apachecn) [Apache中文网](/display/~apachechina)
Apache Zeppelin动态创建输入表单。根据语言后端,创建动态表单有两种不同的方式。自定义语言后端可以选择要使用哪种类型的表单创建。
## 使用表单模板
此模式使用简单的模板语言创建表单。它简单易用。例如Markdown,Shell,Spark SQL语言后端使用它。
### 文本输入表单
要创建文本输入表单,请使用`${formName}`模板。
例如
![](https://img.kancloud.cn/54/26/5426df56b68efe88e12661bd0021a479_502x149.jpg)
也可以提供默认值,使用`${formName=defaultValue}`。
![](https://img.kancloud.cn/aa/41/aa41fd5f5c25ad8838fa8cedb7454f38_504x149.jpg)
### 选择表单
要创建选择表单,请使用 `${formName=defaultValue,option1|option2...}`
例如
![](https://img.kancloud.cn/6e/df/6edf888acc3d6840abb83595c7a806c1_566x133.jpg)
此外,您可以使用选项的显示名称和值分隔 `${formName=defaultValue,option1(DisplayName)|option2(DisplayName)...}`
![](https://img.kancloud.cn/3b/2c/3b2ce68dd0589f095a2609694e800933_566x132.jpg)
默认情况下更改选择后,段落将自动运行。但是,如果您在一个段落中有多种类型的动态表单,则可能需要在更改所有选项后运行该段落。您可以通过取消选中设置菜单中的以下“ **运行选择更改”**选项来控制此选项。即使您取消选中此选项,仍然可以通过按下来运行它`Enter`。
![](https://img.kancloud.cn/31/aa/31aa885a816d04d1cadbd0fca969fc90_286x105.jpg)
### 复选框表单
对于多选,您可以使用复选框来创建`${checkbox:formName=defaultValue1|defaultValue2...,option1|option2...}`。该变量将由基于所选项的逗号分隔字符串代替。例如:
![](https://img.kancloud.cn/af/31/af311fda46c8cb73f047f9c8ce8e3441_566x133.jpg)
此外,您可以使用以下命令指定分隔符`${checkbox(delimiter):formName=...}`:
![](https://img.kancloud.cn/3d/81/3d81ad57ff4af3f96081c60e0ab23af9_566x167.jpg)
与[选择表单](http://zeppelin.apache.org/docs/0.7.1/manual/dynamicform.html#select-form)一样,默认情况下更改[选择后](http://zeppelin.apache.org/docs/0.7.1/manual/dynamicform.html#select-form),段落将自动运行。但是,如果您在一个段落中有多种类型的动态表单,则可能需要在更改所有选项后运行该段落。您可以通过取消选中设置菜单中的以下“ **运行选择更改”**选项来控制此选项。即使您取消选中此选项,仍然可以通过按下来运行它`Enter`。
![](https://img.kancloud.cn/31/aa/31aa885a816d04d1cadbd0fca969fc90_286x105.jpg)
## 以编程方式创建
一些语言后端使用编程方式创建表单。例如[ZeppelinContext](http://zeppelin.apache.org/docs/0.7.1/interpreter/spark.html#zeppelincontext)提供了表单创建API
这里有一些例子。
### 文本输入表单
**Scala**
```
%spark
println("Hello "+z.input("name"))
```
**Python** 展开原码
```
%pyspark
print("Hello "+z.input("name"))
```
![](https://img.kancloud.cn/e9/41/e9417f12670a9b831fa6da68d0b5437c_481x147.jpg)
### 具有默认值的文本输入表单
**Scala**
```
%spark
println("Hello "+z.input("name", "sun"))
```
**Python** 展开原码
```
%pyspark
print("Hello "+z.input("name", "sun"))
```
![](https://img.kancloud.cn/5d/5e/5d5ef7ec8e65ab403e4f58687dac0404_481x147.jpg)
### 选择表单
**Scala**
```
%spark
println("Hello "+z.select("day", Seq(("1","mon"),
("2","tue"),
("3","wed"),
("4","thurs"),
("5","fri"),
("6","sat"),
("7","sun"))))
```
**Python** 展开原码
```
%pyspark
print("Hello "+z.select("day", [("1","mon"),
("2","tue"),
("3","wed"),
("4","thurs"),
("5","fri"),
("6","sat"),
("7","sun")]))
```
![](https://img.kancloud.cn/64/d4/64d4cda001aa6d39b49108043e94e53f_479x243.jpg)
### **复选框表单**
**Scala**
```
%spark
val options = Seq(("apple","Apple"), ("banana","Banana"), ("orange","Orange"))
println("Hello "+z.checkbox("fruit", options).mkString(" and "))
```
**Python** 展开原码
```
%pyspark
options = [("apple","Apple"), ("banana","Banana"), ("orange","Orange")]
print("Hello "+ " and ".join(z.checkbox("fruit", options, ["apple"])))
```
![](https://img.kancloud.cn/23/91/2391c85c04cda2d9ec782186685de841_566x228.jpg)
- 快速入门
- 什么是Apache Zeppelin?
- 安装
- 配置
- 探索Apache Zeppelin UI
- 教程
- 动态表单
- 发表你的段落
- 自定义Zeppelin主页
- 升级Zeppelin版本
- 从源码编译
- 使用Flink和Spark Clusters安装Zeppelin教程
- 解释器
- 概述
- 解释器安装
- 解释器依赖管理
- 解释器的模拟用户
- 解释员执行Hook(实验)
- Alluxio 解释器
- Beam 解释器
- BigQuery 解释器
- Cassandra CQL 解释器
- Elasticsearch 解释器
- Flink 解释器
- Geode/Gemfire OQL 解释器
- HBase Shell 解释器
- HDFS文件系统 解释器
- Hive 解释器
- Ignite 解释器
- JDBC通用 解释器
- Kylin 解释器
- Lens 解释器
- Livy 解释器
- Markdown 解释器
- Pig 解释器
- PostgreSQL, HAWQ 解释器
- Python 2&3解释器
- R 解释器
- Scalding 解释器
- Scio 解释器
- Shell 解释器
- Spark 解释器
- 系统显示
- 系统基本显示
- 后端Angular API
- 前端Angular API
- 更多
- 笔记本存储
- REST API
- 解释器 API
- 笔记本 API
- 笔记本资源 API
- 配置 API
- 凭据 API
- Helium API
- Security ( 安全 )
- Shiro 授权
- 笔记本 授权
- 数据源 授权
- Helium 授权
- Advanced ( 高级 )
- Zeppelin on Vagrant VM ( Zeppelin 在 Vagrant 虚拟机上 )
- Zeppelin on Spark Cluster Mode( Spark 集群模式下的 Zeppelin )
- Zeppelin on CDH ( Zeppelin 在 CDH 上 )
- Contibute ( 贡献 )
- Writing a New Interpreter ( 写一个新的解释器 )
- Writing a new Visualization (Experimental) ( 编写新的可视化(实验) )
- Writing a new Application (Experimental) ( 写一个新的应用程序( 实验 ) )
- Contributing to Apache Zeppelin ( Code ) ( 向 Apache Zeppelin 贡献( 代码 ) )
- Contributing to Apache Zeppelin ( Website ) ( 向 Apache Zeppelin 贡献(website) )