Posterous theme by Cory Watilo

Filed under: htlm

HTML::FormHandler介绍

根据Catalyst的胖Model,瘦Controller原则,在controller里面应该使用最少的代码来保持整个逻辑的清爽。但对于任何一个web app来说,最复杂的逻辑之一就是表单的提交,验证表单,之后再根据需要从做相关的操作,查询数据库或者返回错误。而这些都是Controller的任务

如果在Controller里面hardcode这部分逻辑,整个代码会变得冗长而丑陋,HTML::FormHandler就是为了简化表单的处理而编写的模块。HTML::FormHandler使用Moose作为底层的OO库,代码实现比较优雅和干净。

一个典型的表单定义如下:

HTML::FormHandler主要分为这么几个部分

  • HTML::FormHandler::Field::*

Field主要用来定义表单单元的类型,对某一种类型,会有相应的验证方法和属性,比如定义一个Text类型单元

has_field 'name'  => (Type => 'Text', maxlength => 30, minlength =>6);
  • HTML::FormHandler::Widget::*

Widget用来生成Field的HTML代码,查看源代码,每一个widget都有个render方法,用来创建wdiget的HTML code,这里有两个特殊的widget。HTML::FormHandler::Widget::Wrapper::*用来添加包裹每个表单单元的HTML, 比如添加的是div还是table.还有一个是Widget::Form,定义

…..
部分如何生成

  • HTML::FormHandler:Moose

使用Moose定义的语法糖,比如has_field

  • HTML::FormHandler::Model::*

与数据库交互的模块,值得注意的是FormHandler没有添加任何数据库操作的代码,而只是使用Moose Role定义了数据库操作所需要的方法。

to be continued…