KU案例2之15 注册表单

让我们的网站增加一个注册表单。去喝点咖啡吧,因为我们马上就要学习一些表单和验证的强大知识。

创建注册页面

让我们在UserBundle中创建一个新的RegisterController类。手动创建控制器很简单:只需要添加命名空间,然后继承symfony的controller基类。创建一个registerAction方法来渲染我们的注册页面:

我们继续用annotation路由。记住,要这样做需要两个步骤:首先,添加路由之前要声明。然后,就可以在方法上标注了:

其次,把此路由写入到routing.yml。嗨!我们已经把整个控制器目录都设成annotations,所以不用在写入了。已经ok了。

输入命令看看路由是否加载:

是的,看到了!

 

创建表单

现在让我们构建表单,构建的表单是一个对象,知道我们想要的所有字段和类型,并能够帮助我们呈现出来。我非常喜欢他。

首先调用createFormBuilder()方法。然后使用add函数去传入表单的username、email和password字段:

add函数要传入两个参数一个是字段,一个是字段类型。symfony带有很多内置类型如text,select、date,在symfony官方文档中很容易找到。

我们填写完add后,调用getForm()。

在Twig中呈现表单

我想要去渲染表单,所有我们要把这个form对象传给Twig。使用annotation的@Template渲染页面,并返回form变量给Twig:

提示:上面的代码有一些错误,下面来解决这些问题。

 

让@Template注释可用

我们创建一个Twig模版。根据我们的RegisterController和@Template找到模版路径为Resources/views下的Register目录:

让我们看看浏览器页面的情况。当我们输入一个/register,你会看到一个非常漂亮的页面。哈哈,那是不可能的!我们应该会看到一个巨大的错误。

有时错误是嵌套的,并且最有帮助的很可能在下面。

仔细看看,包含的错误。啊明白了,我们使用了@Template却忘了use声明它。

 

 

发表评论