# 动态表单
原文链接 : [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}`模板。
例如

也可以提供默认值,使用`${formName=defaultValue}`。

### 选择表单
要创建选择表单,请使用 `${formName=defaultValue,option1|option2...}`
例如

此外,您可以使用选项的显示名称和值分隔 `${formName=defaultValue,option1(DisplayName)|option2(DisplayName)...}`

默认情况下更改选择后,段落将自动运行。但是,如果您在一个段落中有多种类型的动态表单,则可能需要在更改所有选项后运行该段落。您可以通过取消选中设置菜单中的以下“ **运行选择更改”**选项来控制此选项。即使您取消选中此选项,仍然可以通过按下来运行它`Enter`。

### 复选框表单
对于多选,您可以使用复选框来创建`${checkbox:formName=defaultValue1|defaultValue2...,option1|option2...}`。该变量将由基于所选项的逗号分隔字符串代替。例如:

此外,您可以使用以下命令指定分隔符`${checkbox(delimiter):formName=...}`:

与[选择表单](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`。

## 以编程方式创建
一些语言后端使用编程方式创建表单。例如[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"))
```

### 具有默认值的文本输入表单
**Scala**
```
%spark
println("Hello "+z.input("name", "sun"))
```
**Python** 展开原码
```
%pyspark
print("Hello "+z.input("name", "sun"))
```

### 选择表单
**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")]))
```

### **复选框表单**
**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"])))
```

- 快速入门
- 什么是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) )