KU案例2之21 使用一个外部的Form Type类

之前,我们创建form在控制器中,很简单。但是,它使我们的控制器很难看,如果我们想把form用到别的地方,估计还要重新写代码。

由于存在这些原因,这些代码需要创建到一个自己的form表单类中。现在,创建一个新的Form目录并创建一个新文件RegisterFormType。创建类,给它一个命名空间并继承AbstractType。

我们需要在这个类中添加一些方法。首先,是最不重要的getName()。添加这个的目的,就是返回一个独一无二的表单字符串。他在你渲染form时使用这部分名称属性。

真正重要的方法是buildForm()。我使用我的IDE创建这个方法,如果你是手动创建的不要忘了声明FormBuilderInterface

用这个buildForm方法来创建我们的form!把之前controller的form代码拷贝到这里:

完成,创建一个setDefaultOptions函数并设置data_class选项:

 

使用Form类

在控制器中移除builder代码。换成CreateForm并传入RegisterFormType的实例。

刷新!我们现在已经征服了form!

 

这些表单

快速预览。创建一个form,给它设置字段和字段类型。首先,form会返回一个关联数组,我们改变data_class配置返回一个实体对象。这些表单还可以单独在外部创建,并在controller里使用。

 

太好了!让我们继续。

发表评论